选择排序

public void selectSort(int[] a){//其实选择排序比冒泡排序要快
/*int minIndex=0;
int min=a[0];
for (int i = 0+1; i < a.length; i++) {
if (min>a[i]){
min=a[i];
minIndex=i;
}
}
a[minIndex]=a[0];
a[0]=min;
System.out.println("第一轮后~");
System.out.println(Arrays.toString(a));

minIndex=1;
min=a[1];
for (int i = 1+1; i < a.length; i++) {
if (min>a[i]){
min=a[i];
minIndex=i;
}
}
if (minIndex!=1){
a[minIndex]=a[1];
a[1]=min;
}

System.out.println("第二轮后~");
System.out.println(Arrays.toString(a));

minIndex=2;
min=a[2];
for (int i = 2+1; i < a.length; i++) {
if (min>a[i]){
min=a[i];
minIndex=i;
}
}
if (minIndex!=2){
a[minIndex]=a[2];
a[2]=min;
}
System.out.println("第三轮后~");
System.out.println(Arrays.toString(a));*/
/*
给你看看我的原代码,它就像一面旗帜,最左边那个屹立不动,
public void selectSort(int[] a){
//它也只需要进行a.length-1这么多轮就够了
for (int i = 0; i < a.length-1; i++) {//这是假定的最小值(即应该在的位置)
int min_true=i;//这是找到的真正最小值,先假设为i
for (int j = i+1; j < a.length; j++) {
if (a[min_true]>a[j]){
min_true=j;
}
}
//找到了真正的之后就交换
int temp=a[i];
a[i]=a[min_true];
a[min_true]=temp;
}
}


*/

for (int i = 0; i < a.length - 1; i++) {
int minIndex=i;
int min=a[i];
for (int j = i+1; j < a.length; j++) {
if (min>a[j]){
min=a[j];
minIndex=j;
}
}
if (minIndex!=i){
a[minIndex]=a[i];
a[i]=min;
}

//System.out.println(Arrays.toString(a));
}
}

 

 

posted @ 2021-07-29 12:30  朱在春  阅读(36)  评论(0编辑  收藏  举报