排序算法(冒泡、快速、sort)

冒泡

外循环每次次指定一个位置,内循环将外循环指定位置上的数与其它位置上的数依次做比较

由于每次外循环都能排好一个最大值,因此在内循环的比较中可以跳过已经拍好序的位置,再做其他位置的比较哦

 

for (var i = 0; i < len; i++) {
                
                for (var j = i + 1; j < len; j++) {
                    
                    console.log(i)
                    
                    if( arr[i] > arr[j] ){
                        
                        ind = arr[j];
                        
                        arr[j] = arr[i];
                        
                        arr[i] = ind;
                    }
                }
                
            }

 

另个模式,不用外循环指定位置,

for (var j = 0; j < len-i-1; j++) {
                    
                    if( arr[j] > arr[j + 1] ){
                        
                        ind = arr[j];
                        
                        arr[j] = arr[j+1];
                        
                        arr[j+1] = ind;
                        
                    }
                }*

 

快速

利用递归调用

function quicksort(arr){
            if (arr.length <= 1) {
                return arr;
            }
            
            var ind = Math.floor(arr.length / 2);
            var base = arr[ind];
            
            var left = [];
            var right = [];
            
            for (var i = 0, len = arr.length; i < len; i++) {
                if(i === ind){
                    continue;
                }
                
                if(arr[i] < base){
                    left.push(arr[i]);
                }else{
                    right.push(arr[i]);
                }
            }
            
            return quicksort(left).concat(base, quicksort(right));
            
        }

 

数组方法sort

利用s数组本地排序方法

function systemsort(arr){
            if (arr.length <= 1) {
                return arr;
            }
            
            arr.sort(function(a,b){
                return a-b;//返回负数就是升序,返回正数则降序
            })
            
            return arr;
        }

 

over

function quicksort(arr){if (arr.length <= 1) {return arr;}var ind = Math.floor(arr.length / 2);var base = arr[ind];var left = [];var right = [];for (var i = 0, len = arr.length; i < len; i++) {if(i === ind){continue;}if(arr[i] < base){left.push(arr[i]);}else{right.push(arr[i]);}}return quicksort(left).concat(base, quicksort(right));}

posted @ 2016-12-06 21:07  七分醉儿  阅读(70)  评论(0)    收藏  举报