三种简单排序方法

三种简单排序方法

冒泡排序(以从小到大说明)

  • 从第一个开始比较相邻两个元素比较大小,如果前面元素小于后面元素,交换位置.
  • 经过一次循环最小的元素会排到最后面.
  • 最小的元素在最后面了,后面的循环不必参与了
  • 从后往前排

代码实现如下

var arr = [45, 12, 45, 78, 12, 88, 96, 11]//从大到小

        for (var j = 1; j < arr.length; j++) {
            //-j是因为进行循环后最后面元素就是最小值不必重新排长度减小
            for (var i = 0; i < arr.length - j; i++) {
                if (arr[i] < arr[i + 1]) {
                    var temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
        console.log(arr);

选择排序

  • 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
  • 从前往后排

代码实现如下

var arr = [45, 421, 5, 89, 4, 6, 457, 2, 33, 555, 78]
//以从小到大排序

        for (var j = 0; j < arr.length; j++) {
            var miniindex = j;//对miniindex进行初始化
            for (var i = j+1 ; i < arr.length; i++) {
            //j+1的原因是前面排过的元素不需要再拍了
                if (arr[miniindex] > arr[i]) {
                    miniindex = i;//得到了最小数值的下标
                }
            }
            var temp = arr[j];//注意别写错这里是和外层循环的交换
            arr[j] = arr[miniindex];
            arr[miniindex] = temp;
            //把最小的元素排到了前面,这个位置不用排了
        }
        console.log(arr);

插入排序

  • 插入排序的基本思想是:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
//插入排序
        var arr = [45, 88, 98, 23, 45, 11, 14, 45, 12]
        //从小到大排序
        for (var i = 0; i < arr.length; i++) {
            for (var j = i; j > 0 && arr[j] < arr[j - 1]; j--) {
                //和前面的比大小,小的到前面去,从后往前比
                var temp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = temp;

            }
        }
        console.log(arr);

你可能感兴趣的:(三种简单排序方法)