简单选择排序

选择排序的思想是:

  • 在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;
  • 再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾

原始的数组 : 101, 34, 119, 1 第一轮排序 : 1, 34, 119, 101 第二轮排序 : 1, 34, 119, 101 第三轮排序 : 1, 34, 101, 119

说明:

  1. 选择排序一共有 数组大小 - 1 轮排序
  2. 每1轮排序,又是一个循环, 循环的规则(代码)
    2.1先假定当前这个数是最小数
    2.2 然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标
    2.3 当遍历到数组的最后时,就得到本轮最小数和下标
    2.4 交换 [代码中再继续说 ]

代码:
选择排序 - 图1

  1. //选择排序
  2. static void selectSort(int[] arr){
  3. for(int i = 0; i < arr.length; i++) {
  4. int minIndex = i;/**记录后面的最小值的下标*/
  5. for (int j = i + 1; j < arr.length; j++) //注意从i+1开始
  6. if(arr[j] < min) {
  7. minIndex = j;
  8. }
  9. swap(arr,i,minIndex);
  10. }
  11. }

堆排序