思想:选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
for (int i = 0; i < length-1; i++) { for (int j = i + 1; j < length; j++) { if (arr[i] > arr[j]) { k = arr[i]; arr[i] = arr[j]; arr[j] = k; } } }
分析:假若将元素从小到大排序:i=0时,j=1,j直至length-1,将第一个元素与后面所有元素相比较,若有比i=0对应元素小的,则将二者调换位置,否则不变。
i=1依次到length-1得出最终的结果(注意在比较的过程中,前面每个索引对应的元素可能会变,不要混淆)
举例:12 23 8 46 3
i=0,j=1:12 23 8 46 3
i=0,j=2:8 23 12 46 3
i=0,j=3:8 23 12 46 3
i=0,j=4:3 23 12 46 8
一:找出了第一小的元素3,下一轮比较不动
i=1,j=2:3 12 23 46 8
i=1,j=3:3 12 23 46 8
i=1,j=4:3 8 23 46 12
二:找出了第二小的元素8,下一轮比较不动
i=2,j=3:3 8 12 46 23
i=2,j=4:3 8 12 46 23
三:找出来第三小的元素12,下一轮比较不动
i=3,j=4:3 8 12 23 46
四:找出来倒数第二小的元素23,比较结束