1. 程式人生 > >陣列排序【氣泡排序、快速排序、選擇排序】

陣列排序【氣泡排序、快速排序、選擇排序】

在工作中遇到了排序問題,隨後就總了了幾種排序方式【氣泡排序、快速排序、選擇排序】

【氣泡排序】

  原理:比較相鄰的兩個元素,將值大的交換至右側

// 氣泡排序:比較相鄰的兩個元素,將值大的交換至右邊
        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-