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));
        }                

猜你喜欢

转载自blog.csdn.net/weixin_42181824/article/details/80455763
今日推荐