上面那个应该属于选择排序,以9 1 2 8 7 3 6 4 5为例:
9 1 2 8 7 3 6 4 5
第一轮循环过程
1 9 2 8 7 3 6 4 5
第二轮循环过程
1 2 9 8 7 3 6 4 5
第三轮循环过程
1 2 8 9 7 3 6 4 5
1 2 7 9 8 3 6 4 5
1 2 3 9 8 7 6 4 5
第四轮……
每轮循环的结果是吧最小的放在未排好的序列最前
而冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。
int[] a=new int[2];
//选择排序
int temp=0;
for(int i=0;i
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
//冒泡
for(int i=0;i
//交换
}
}
}
第一段代码的逻辑有问题。a[0]假如比a[1]大,那a[1]和a[0]互换,然后依次和后面的对比。第二次循环是从a[1]开始,但原先的a[1](现在的a[0])不一定是最小,这里却跳过了,后面也是这个原理。
第二段代码是真正的冒泡排序,他先遍历出最大的那个数字放在最后,第二次循环的时候去除了最后一位再遍历一次,找到第二大的那个数字再放在倒数第二位,依次循环.
同意“♂凡鸟♂”说的。bubbleSortArrayASC是一依次比较相邻的,然后减少每次循环的长度,因为大数已经在数组末尾了。