选择排序分为直接选择排序和堆排序两种。

直接选择排序

选择排序 - 图1

如图,选择排序原理实际上就是每次找出极值(最大值、最小值)完成排序。

  1. function selectionSort(arr) {
  2. var len = arr.length;
  3. var minIndex, temp;
  4. for (var i = 0; i < len - 1; i++) {
  5. minIndex = i;
  6. for (var j = i + 1; j < len; j++) {
  7. if (arr[j] < arr[minIndex]) { // 寻找最小的数
  8. minIndex = j; // 将最小数的索引保存
  9. }
  10. }
  11. temp = arr[i];
  12. arr[i] = arr[minIndex];
  13. arr[minIndex] = temp;
  14. }
  15. return arr;
  16. }

函数说明:首先遍历 Arrary,判断当前元素是否为极值(找出极值索引),然后两者交换位置,遍历完成数组即可得到顺序的新数组。


堆排序