• 常用的排序方法


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>js排序</title>
    </head>
    <body>
        
    </body>
    <script type="text/javascript">
        // 1.比较相邻的两个元素,如果前一个比后一个大(arr[j] > arr[j+1]),则交换位置。
    
        // 2.每轮比较结束的时候最后一个元素应该是最大的一个。
    
        // 3.外层的循环控制循环的次数(length -1),内层循环控制每次需要比较的个数(length -1 -i)
        let sort = (arr) => {
            if (!Array.isArray(arr)) {
                console.log('type error!')
                return
            }
            if(arr.length <= 1){
                return arr;
            }
    
            for(let i = 0; i < arr.length - 1; i++ ){
                for(let j = 0; j < arr.length - 1 - i; j++ ){
                    if(arr[j] > arr[j+1]){
                        let temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
    
            return arr;
        }
    
        // 1获取数组长度,以及中间索引及value
    
        // 2.与中间值进行比较,小的添加为l_arr数组,大的添加为r_arr数组,相等的添加为m_arr数组
    
        // 3.采用递归的方式进行不断的分割
        
        let quickSort = (arr) =>{
            if (!Array.isArray(arr)) {
                console.log('type error!')
                return
            }
            if(arr.length <= 1){
                return arr;
            }
    
            let m_index = Math.floor(arr.length/2);
            let m_val = arr[m_index];
            let l_arr = [];
            let r_arr = [];
            let m_arr = [];
            for(let i =0 ; i < arr.length; i++){
                if(arr[i] < m_val){
                    l_arr.push(arr[i]);
                }else if(arr[i] > m_val[i]){
                    r_arr.push(arr[i])
                }else {
                    if(i !== m_index){
                        m_arr.push(arr[i])
                    }
                }
            }
    
            return quickSort(l_arr).contact(m_arr,quickSort(r_arr));
    
        }
        let arr = [2,5,3,0,8,6];
    
        console.log(sort(arr))
        // [0, 2, 3, 5, 6, 8]
    </script>
    </html>
  • 相关阅读:
    模板层
    视图层
    网络编程
    面向对象的三大特性之继承
    面向对象的三大特性之封装
    面向对象的属性和方法
    面向对象编程
    垃圾回收机制
    re模块、正则表达式
    模块之hashlib、hmac、configparser、subprocess、xlrd、xlwt、xml
  • 原文地址:https://www.cnblogs.com/tylz/p/11351837.html
Copyright © 2020-2023  润新知