学习JavaScript排序算法

2017-12-07 oseglousuki

一、冒泡排序

  • 按照顺序两两进行比较,较大的向后沉,内层第一次循环结束后最大的数即沉到最后。
  • 内层循环 arr.length - 1 - i 就不会再比较已经排到最后的数。
  • 相同的数字不会交换位置。
// 冒泡排序
function bubbleSort(arr) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    return arr;
}

二、选择排序

  • 每次循环选择第 i 个数作为最小的数,和后面的数一次进行比较,遇到小的数就记录下 index
  • 内层循环完毕后将最小的数和被选择的数交换位置。
  • 外层第一次循环就可以将最小的数上浮到开头。
  • i + 1 被比较的数总是从被选择得数后面开始。
  • arr.length - 1 最后一个数不会被选择。
// 选择排序
function selectionSort(arr) {
    for (var i = 0; i < arr.length - 1; i++) {
        var index = i; // 记录被选择数的索引
        for (var j = i + 1; j < arr.length; j++) {
            if (arr[j] < arr[index]) {
                index = j;
            }
        }
        var temp = arr[i];
        arr[i] = arr[index];
        arr[index] = temp;
    }
    return arr;
}

用户评论
开源开发学习小组列表