快速排序,选择排序,冒泡排序,简单选择排序

快速排序

取一个中间数,满足条件的放右边,不满足条件的放左边,直到整个数组规则排列
var arr=[12,25,56,35,23,14,15,51,51,6,7];
function quickSort(arr) {
    if(arr.length<2){
        return arr;
    }
    var val=arr.splice(Math.floor(arr.length/2),1),left=[],right=[];
    for(i in arr){
        if(arr[i]>val){
            right.push(arr[i]);
        }else{
            left.push(arr[i]);
        }
    }
    return quickSort(left).concat(val,quickSort(right));
}
console.log(quickSort(arr));

简单选择排序

将每次循环的第一个数与后面所有的数相比较,比它小就记录它的下标,直到找到这次循环的最小值下标,使这次循环的第一个数与这个最小值交换位置
var arr = [12, 25, 56, 35, 23, 14, 15, 51, 51, 6, 7];

function easy(arr) {
    for (i in arr) {
        var index = i;
        for (var j = +i + 1; j < arr.length; j++) {
            if (arr[index] > arr[j]) {
                index = j;
            }
        }
        var temp = arr[i];
        arr[i] = arr[index];
        arr[index] = temp;
    }
    return arr;
}
console.log(easy(arr));

选择排序

将每次循环的第一个数与后面所有的数相比较,比它小就交换,使每次循环的第一个数永远是这次循环的数里面的最小数
var arr=[12,25,56,35,23,14,15,51,51,6,7];
function easy(arr) {
    for(i in arr){
        for(var j=+i+1;j<arr.length;j++){
            if(arr[i]>arr[j]){
                var temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }
    return arr;
}
console.log(easy(arr));

冒泡排序

将相邻的两个数相比较,只要前面的数比后面的数大就交换,使每次循环的第一个数永远是这次循环的数里面的最小数
var arr = [12, 25, 56, 35, 23, 14, 15, 51, 51, 6, 7];

function maopao(arr) {
    for (i in arr) {
        // for(var j=arr.length-1;j>=i;j--){
        //     if(arr[j-1]>arr[j]){
        //         var temp=arr[j-1];
        //         arr[j-1]=arr[j];
        //         arr[j]=temp;
        //     }
        // }
        for (var j = 0; j < arr.length - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    return arr;
}
console.log(maopao(arr));
posted @ 2022-04-20 18:34  听风小弟  阅读(44)  评论(0)    收藏  举报