数组排序

Posted 浅陌初心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组排序相关的知识,希望对你有一定的参考价值。

1、         冒泡排序,将数组从小到大排序,即从数组左边开始相邻两个元素比较大小和交换位置。

<script>
//        冒泡排序,从小到大。
         var arr = [41, 21, 12, 52, 67, 32, 23];
        var outer = 0, inner = 0;
        for (var j = 0; j < arr.length - 1; j++) {
//            声明flag作用是判断数组内元素是否从小到大排列好,是就跳出当前循环。
            var flag = true;
//            i < arr.length -1变为i < arr.length - 1 - j,此处优化去除了一些重复操作。
            for (var i = 0; i < arr.length - 1 - j; i++) {
                if (arr[i] > arr[i + 1]) {
                    var temp = arr[i + 1];
                    arr[i + 1] = arr[i];
                    arr[i] = temp
                    flag = false;
                }
                inner++;//内层循环次数
            }
            if (flag) {
                break;
            }
            outer++;//外层循环次数
        }
        console.log(arr);
        console.log(inner);
        console.log(outer);
    </script>

 

2、         选择排序,将数组从小到大排序,即依次取出数组中最小值,然后依次放入新的数组中并将它们从原数组中去除掉。

<script>
//        选择排序,从小到大
        var arr = [65,97,76,13,27,49,58 ];
        var newArr = [];
        for(var i=0;i<arr.length;i++) {
            var min = arr[0];
            var minIndex = 0;
            for(var j=0;j<arr.length;j++) {
                if(min > arr[j]) {
                    min = arr[j];
                    minIndex = j;
                }
            }
            newArr[newArr.length] = min;
            arr[minIndex] = 100;//相当于将arr中的最小值去除
        }
        console.log(newArr);
    </script>

3、         插入排序

<script>
        var arr = [5, 4, 6, 2, 1];
        //        从第二个开始往后
        for (var i = 1; i < arr.length; i++) {
            var temp = arr[i];
//            从第i个往前 只要比你小 就让你往后移动 让第i个插到合适位置
            for (var j = i - 1; j >= 0 && arr[j] > temp; j--) {
                arr[j + 1] = arr[j];
//                console.log("j现在是" + j);
//                console.log("内循环" + arr[j + 1]);
//                console.log("内循环" + arr);
            }
            arr[j + 1] = temp;
//            console.log("j现在是" + j);
//            console.log("外循环" + arr[j + 1]);
//            console.log("外循环" + arr);
        }
        console.log(arr);
    </script>

4、         运算符的优先级,优先级从高到底

a)     ()  优先级最高

b)    一元运算符  ++   --   !

c)     算数运算符  先*  /  %   后 +   -

d)     关系运算符  >   >=   <   <=

e)     相等运算符   ==   !=    ===    !==

f)                 逻辑运算符 先&&   后|| 

5、         number类型的浮点数在算数计算时不准确,如var result = 0.1 + 0.2;的计算结果不是0.3,而是0.30000000000000004。不要判断浮点数是否相等,不过判断范围还是可以的。

 

以上是关于数组排序的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的时间复杂度是多少?

快速排序-递归实现

对数组中的字符串进行排序,使其稀疏

算法排序之堆排序

在第6731次释放指针后双重免费或损坏

VSCode自定义代码片段—— 数组的响应式方法