zoukankan      html  css  js  c++  java
  • 常用的排序方法

    <!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>
  • 相关阅读:
    Calling a parent window function from an iframe
    JSON with Java
    Posting array of JSON objects to MVC3 action method via jQuery ajax
    What's the difference between jquery.js and jquery.min.js?
    jquery loop on Json data using $.each
    jquery ui tabs详解(中文)
    DataTables warning requested unknown parameter
    Datatables 1.10.x在命名上与1.9.x
    jQuery 1.x and 2.x , which is better?
    DataTabless Add rows
  • 原文地址:https://www.cnblogs.com/tylz/p/11351837.html
Copyright © 2011-2022 走看看