1. 程式人生 > >js中的氣泡排序,選擇排序,快排, 理解和使用

js中的氣泡排序,選擇排序,快排, 理解和使用

一;氣泡排序:相鄰兩元素之間兩兩比較,比較出大值進行賦值互換,再依次與相鄰的元素比較,層層遞進 #互換元素位置,相互賦值。

<script type="text/javascript">
  var my_num = [1,3,9,0,40]
  function num(arr){
   for(var i =0; i< arr.length-1;i++){
    for(var j = 0;j < arr.length-1;j++){
     if(arr[j]>arr[j+1]){
      var tmpe = arr[j];
      arr[j] = arr[j+1];
      arr[j+1]= tmpe;

     }
    }
   }return arr;

  }
  document.write(num(my_num));
  </script>

二,選擇排序,先定義一個元素的最大值與最小值,拿 每個元素與最值比較,取大值放到元素最右端,層 層比較,#互換元素下標位置,再賦值,所以比氣泡排序的效率高,

<script type="text/javascript">
   var my_num=[1,3,9,0,40]
   function num (arr){
    for(var i = 0;i < arr.length-1;i++){
     var maxone = i;
     for(var j = i;j<arr.length;j++){
      if(arr[j]<arr[maxone]){
       maxone=j;
       var temp = arr[i];
       arr[i]=arr[maxone];
       arr[maxone]=temp;
      }
     }
    }
    return arr;
   }
   document.write(num(my_num));
  </script>

三;快排

大致分三步:

1、找基準(一般是以中間項為基準)

2、遍歷陣列,小於基準的放在left,大於基準的放在right

3、遞迴

        function quickSort(arr){
            //如果陣列<=1,則直接返回
            if(arr.length<=1){return arr;}
            var pivotIndex=Math.floor(arr.length/2);
            //找基準,並把基準從原陣列刪除
            var pivot=arr.splice(pivotIndex,1)[0];
            //定義左右陣列
            var left=[];
            var right=[];

            //比基準小的放在left,比基準大的放在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));
        }