zoukankan      html  css  js  c++  java
  • 快速排序

    核心思想:在当前参加排序的序列中任意选择一个元素,把小于等于分界元素的所有元素都移到分界元素的前边,把大于等于分界元素的所有元素都移到分界元素的后边,这样,分界元素正好处在排序的最终位置上,并且把当前参加排序的序列划分成前后两个子序列。然后,分别对这两个子序列递归地进行上述过程,直到使得所有元素都到达整个排序后它们应处的位置上。

    var arr1 = [38,49,65,97,76,13,27,49];

    function swap(arr,x,y) {
      var temp ;
      temp = arr[x];
      arr[x] = arr[y];
      arr[y] = temp;
    }
    var quick= function(arr,s,t){
      var i, j,temp;
      if(s<t){
        i=s;
        j=t+1;
        while(1){
          do {
            i++;
          }while(!(arr[s]<=arr[i]||i==t));
          do {
            j--;
          }while(!(arr[s]>=arr[j]||j==s));
          if(i<j){
            swap(arr,i,j);
          }else{
            break;
          }
        }
        swap(arr,s,j);
        quick(arr,s,j-1);
        quick(arr,j+1,t);
      }
    }
    var quickSort = function(arr){
      var n = arr.length;
      quick(arr,0,n-1);
    }

    quickSort(arr1);
    console.log(arr1);

     算法分析:快速排序的时间复杂度是O(n2),不稳定排序

  • 相关阅读:
    task打印执行结果
    九宫格----记网易游戏2015年研发类笔试题
    第一篇博客
    http超时机制
    SVN错误解决办法
    FFmpeg源码编译
    闲来无事——第一弹 Java基础 基本数据类型
    一个比较好的图标搜索网站
    JS 跑马灯
    Jquery
  • 原文地址:https://www.cnblogs.com/jymz/p/4180438.html
Copyright © 2011-2022 走看看