选择排序
思想
第一次排序假设左边的第一个数最小,用标记把它记录下来,然后第二个数.第三个数...依次与array【min】比较,发现更小的就赋值给min,最后array【min】与array【i】交换;
一趟排序后最小的数就排到了最左边,第二次排序假设左边的第二个数最小,依次类推。
示例
第一趟排序
第二趟排序
关键代码
for(int i=0;i<array.length-1;i++){
int min = i; //假设array【i】为最小值
for(int j =i+1;j<array.length;j++){
if(array[j]<array[min])
min = j;
}
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
复杂度
冒泡排序是每一次都可能要交换,而选择排序是在比较时记下a[i]的位置 最后来交换 , 所以他们的交换过程是不一样的, 而查找的过程是一样的,效率不会比冒泡的低...