选择排序
效果等同于冒泡排序 无论从效率 还是空间复杂度 都要优于冒泡排序
选择排序和冒泡排序的区别
冒泡排序:
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数 放后。然后比较第2
个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较
(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个 数),将小数放前中,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟
结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
选择排序
第一次从下标为0的开始下标为0的这个数与后面的n-1个进行比较;找出最小或者最大的放在下标为0的这个位置;第二次从下标为1的开始比较;查询剩下的最大或者最小值;放在
下标为1的位置;以此类推;直到排序完成
//选择排序
int[] aa = {1,5,4,12,6,45,89,66};
for (int i = 0; i < aa.length-1; i++) {
//k 为最小值 小标
int k=i;
//第一层循环的每一个元素 与它之后的每一个元素比较 得出最小的一个数, 放在首位
for(int j=k+1;j<aa.length;j++){
//
if(aa[j]<aa[k]){
k=j;
}
}
//不相等 证明最小值不在首位
if(k!=i){
// 就把最小的值放在首位
int min =aa[i];
aa[i]=aa[k];
aa[k]=min;
}
}
for (int i : aa) {
System.out.println(i);
}