数组排序【冒泡排序、快速排序、选择排序】

在工作中遇到了排序问题,随后就总了了几种排序方式【冒泡排序、快速排序、选择排序】

【冒泡排序】

  原理:比较相邻的两个元素,将值大的交换至右侧

// 冒泡排序:比较相邻的两个元素,将值大的交换至右边
        var arr = [1,20,5,62,8,2,45];
        function bubbleSort(obj){
            for(var i = 0; i < obj.length; i++){
                for(var j = 0; j < obj.length -i -1; j++){
                    if(obj[j] > obj[j+1] ){
                        var temp = obj[j];
                        obj[j] = obj[j+1];
                        obj[j+1] = temp;
                    }
                }
            }
            return obj;
        }
        document.write("冒泡排序" + bubbleSort(arr) + "<br>");

 

【快速排序】

  原理:1、选择数组的一个中间值,分成左右两个数组,

     2、用中间值与数组的值进行比较,比中间值小的放到左数组,比中间值大的放到右数组

       3、最后将左数组、中间值与右数组连接起来

 //快速排序:选择中间值,分左右两个数组,左数组的都比右数组的小
        var arr = [1,20,5,62,8,2,45];
        function quickSort(arr){
            if(arr.length <= 1){
                return arr;
            }
            var middleIndex = Math.floor(arr.length / 2);
            var middleVal = arr.splice(middleIndex, 1)[0];
            var left = [], right = [];
            for(var i = 0; i < arr.length; i++){
                if(arr[i] < middleVal){
                    left.push(arr[i]);
                }else{
                    right.push(arr[i]);
                }
            }
            return quickSort(left).concat([middleVal], quickSort(right))
        }
        document.write("快速排序:" + quickSort(arr) + "<br>");

 

【选择排序】

  原理:把未选择中的最小值存放在起始位置,然后在未排序中找到最小的值,放在已排序的最后

 //选择排序:把未选择中的最小值存放在起始位置,然后在未排序中找到最小的值,放在已排序的最后
        var selectSortArr = [1,20,5,62,8,2,45];
        function selectSort(arr){
            if(arr.length <= 1){
                return arr;
            }
            var minIndex, temp;
            console.log(arr)
            for(var i = 0; i< arr.length; i++){
                minIndex = i;
                for(var j = i + 1; j < arr.length; j++){
                    if(arr[j] < arr[minIndex]){
                        minIndex = j;
                    }
                }
                temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
                console.log(arr)
            }
            return arr;
        }
        document.write("选择排序:" + selectSort(selectSortArr));

 

 

 

-THE END-

posted @ 2019-01-10 18:47  小时光不期而遇  阅读(421)  评论(0编辑  收藏  举报