zoukankan      html  css  js  c++  java
  • JS中冒泡排序,选择排序,快速排序

        var arr = [1,4,2,9,7,6,5,4,7,5];
        // 冒泡排序(通俗的说就是j 和 j+1打,谁赢了谁去后面)
     
        for(var i = 1;i<arr.length;i++){
            for(var j = 0;j<arr.length - i;j++){
                if(arr[j]>arr[j+1]){
                    var temp =  arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        console.log(arr);


        // 选择排序(通俗的说就是j 和i打,谁赢了谁去前面)
     
        for(var i = 0;i<arr.length-1;i++){
            for(var j = i+1;j<arr.length;j++){
                if(arr[i]>arr[j]){
                    var temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
            }
        }
        console.log(arr);



        //速排序:
            取数组中间下标的值,再将其他值与该值相比,大于加入右数组,小于加入左数组,递归调用
     
        function quick(arr){
            // 递归出口条件
            if(arr.length<=1){return arr;}
            // 获取中间下标
            var centerindex = arr.length%2==0?arr.length/2:(arr.length+1)/2;
            // 获取中间下标对应的值
            var centerElement = arr[centerindex];
            // 创建左右数组
            var left = [];
            var right = [];
            // 循环判断,若元素大于中间下表对应的值则加入左数组,反之加入右数组
            for(var i = 0;i<arr.length;i++){
                if((i!=centerindex)&&(arr[i]>=centerElement)){
                    right.push(arr[i]);
                }
                if((i!=centerindex)&&(arr[i]<centerElement)){
                    left.push(arr[i]);
                }
            }
            //递归调用该函数
            return quick(left).concat(centerElement).concat(quick(right));
        }
       console.log(quick(arr));
  • 相关阅读:
    eclipse恢复界面默认设置
    文件夹的拷贝
    文件的输入输出
    十进制转二进制,八进制,十六进制(查表法)
    数组元素的查找(折半查找)
    C++几个小函数
    C++ 内部排序(一)
    C++实现链表
    C++输出IP地址段内的合法地址
    我看软件工程师的职业规划
  • 原文地址:https://www.cnblogs.com/suihang/p/9495302.html
Copyright © 2011-2022 走看看