js 几种排序方法

1、冒泡排序

 1        var arr = [9, 7, 5, 3, 1];
 2        for (var i = 0; i < arr.length - 1; i++) {
 3            for (var j = 0; j < arr.length - 1 - i;j++) {
 4                if (arr[j] > arr[j + 1]) {
 5                    var temp = arr[j];
 6                    arr[j] = arr[j + 1];
 7                    arr[j + 1] = temp;
 8                }
 9            }
10        }
11        console.log(arr); 

2、选择排序

     function selectSort(arr){
        for(var i=0;i<arr.length-1;i++){
        var minIndex = i;
        for(var j=i+1;j<arr.length;j++){
        if(arr[minIndex] > arr[j]){
            minIndex = j;
            }
            }
            if(i!=minIndex){
            var tmp = arr[minIndex];
            arr[minIndex] = arr[i] ;
            arr[i] = tmp;
                }
            }
            return arr;
                
            }
            console.log(selectSort(arr));            

 

3.快速排序

var quickSort = function(arr){
if(arr.length <=1){
    return arr;
}
var pivotIndex = Math.floor(arr.length/2);//找基准点
var pivot = arr.splice(pivotIndex,1)[0];//从pivotIndex位开始删除1位  6
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++) {
    if(arr[i] < pivot){
        left.push(arr[i]);
    }else{
        right.push(arr[i]);
    }
}
return quickSort(left).concat([pivot],quickSort(right));//拼接

}
console.log(quickSort([3,5,1,6,8,2]));

 4.数组的排序方法 sort()+比较函数

  var arr=[33,44,11,22];
        arr.sort(function(num1,num2){
             return num1-num2;
        }) //[11,22,33,44]

    //整个方法是按照 ASCII码进行比较的。

 

posted @ 2017-10-20 21:35  doublealoe  阅读(1288)  评论(0)    收藏  举报