package test;
public class Demo {
//快读排序
public static void kspx(int[] index){
//i is left ; index.length-i-1 is right
for (int i = 0; i < index.length/2; i++) {
//left和右边的比较
for (int j = i+1; j < index.length-i; j++) {
if(index[i]>index[j]){
int temp = index[i];
index[i] = index[j];
index[j] = temp;
}
}
//right和左边的比较
for (int j = i+1; j < index.length-i-1; j++) {
if(index[index.length-i-1]<index[j]){
int temp = index[index.length-i-1];
index[index.length-i-1] = index[j];
index[j] = temp;
}
}
}
for (int i = 0; i < index.length; i++) {
System.out.print(index[i]+" ,");
}
}
//插入排序
public static void crpx(int[] index){
//index[i]要插入到前边的有序的数组里
for (int i = 1; i < index.length; i++) {
//和前边的每一个数比较 直到找到比它大的数 跳出循环,插入进来
label:
for (int j = 0; j < i; j++) {
if(index[i]<index[j]){
//让后边的每一个数向后顺延一位,插入进来,最后跳出循环
int temp = index[i];
for (int j2 = i-1; j2 >= j; j2--) {
index[j2+1] = index[j2];
}
index[j]= temp;
break label;
}
}
}
for (int i = 0; i < index.length; i++) {
System.out.print(index[i]+" ,");
}
}
//选择排序
public static void xzpx(int[] index){
// index[i] 前边的是有序的 然后从无序的数组里挑出一个最小的和index[i]交换位置
for (int i = 0; i < index.length-1; i++) {
int minIndex = i;//无序数组里最小的数的索引
int min = index[i];
for (int j = i+1; j < index.length; j++) {
if(index[j]<min){
min = index[j];
minIndex = j;
}
}
//交换位置
int temp = index[minIndex];
index[minIndex] = index[i];
index[i] = temp;
}
for (int i = 0; i < index.length; i++) {
System.out.print(index[i]+" ,");
}
}
public static void main(String[] args) {
int[] index = {8,9,4,5,5,3,6,4,96,9,5,5,65,26,0,1};
// new Demo().kspx(index);
// new Demo().crpx(index);
new Demo().xzpx(index);
}
}