• Partition算法及Partition算法用于快速排序


    JavaScript简单方便,所以用JavaScript实现,可以在Chrome控制台下观察运行结果。主要实现Partition算法,比如输入为 
      var array = [4, 2, 1, 3, 6, 8, 9, 7, 5]; 
      partition(array, 0, 8); 
    那么按照array[0]即4进行划分,结果为 [3, 2, 1, 4, 6, 8, 9, 7, 5] 
    1. [代码][JavaScript]代码     

    // 先来看Partition算法,Partition算法是快速排序的基础
    <script type="text/javascript">
        // 划分算法
       function partition(array, p, r) {
          if(p < 0 || r < 0 || p >= r || r > array.length-1)
            return;
           
          var i = p;
          var pivot = array[i];
          for(var j = p+1; j <= r; j++) {
             if(array[j] < pivot) {
                i++;
                var temp = array[j];
                array[j] = array[i];
                array[i] = temp;
             }
          }
           
          // 交换array[i]和array[p]
          var temp = array[p];
          array[p] = array[i];
          array[i] = temp;
           
          return i;
      }
       
      var array = [4, 2, 1, 3, 6, 8, 9, 7, 5];
      partition(array, 0, 8);
      console.log(array);
    </script>
    2. [代码][JavaScript]代码   
    // 基于上面的Partition算法,获得下面的快速排序算法
    <script type="text/javascript">矢量素材
        // 划分算法http://www.huiyi8.com/shiliang/
       function partition(array, p, r) {
          if(p < 0 || r < 0 ||  p >= r || r > array.length-1)
            return;
           
          var i = p;
          var pivot = array[i];
          for(var j = p+1; j <= r; j++) {
             if(array[j] < pivot) {
                i++;
                var temp = array[j];
                array[j] = array[i];
                array[i] = temp;
             }
          }
           
          // 交换array[i]和array[p]
          var temp = array[p];
          array[p] = array[i];
          array[i] = temp;
           
          return i;
      }
       
      function quickSort(array, p, q) {
         if(p > q || p < 0 || q < 0 || q > array.length-1)
            return;
          
         if(p==q)   // 递归终止条件
            return;
          
         var mid = partition(array, p, q);
         quickSort(array, p, mid-1);
         quickSort(array, mid+1, q); 
      }
       
      var array = [4, 2, 1, 3, 6, 8, 9, 7, 5];
      quickSort(array, 0, 8);
       
      console.dir(array);
    </script>

  • 相关阅读:
    golang框架对比Revel and Beego
    Gin框架系列02:路由与参数
    用cp命令拷贝文件,源目录后带不带斜杠的区别
    Isilon Gen6的换盘步骤
    如何在同一行里执行多个linux命令?
    KB,MB,GB,TB,PB,EB,ZB,YB,BB
    Isilon的WebUI上指定跨时区时间的小问题
    用Powershell强制同步Windows主机与Internet time server的时间
    Remote Desktop突然不能用了 “This could be due to CredSSP encryption oracle remediation”
    打开KVM Console的一些注意事项
  • 原文地址:https://www.cnblogs.com/xkzy/p/3878513.html
Copyright © 2020-2023  润新知