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

     输入一组数据小到大排序

     

      void quick_sort(int *array, int left, int right)

     

      {

     

      if(left < right)

     

      {

     

      int i=left,j=right; /* i,j分别为左右 游标 */

     

      while(i != j){

     

      /* 扫描右边查找比比基准点小的数,如果是大的只需移动下标 */

     

      while(i!=j && array[j]>array[i]) /* 此时基准点为 array[i] */

     

      j--;

     

      /* 上面的循环结束,说明在右边找到一个比基准的小的数 */

     

      if(i!=j){

     

      array[j] = array[i] ^ array[j]; /* 将基准点从i处换到j处 */

     

      array[i] = array[i] ^ array[j];

     

      array[j] = array[i] ^ array[j];

     

      i++; /* 当前下标为j的数字 已经被置换到下标为i的位置,而此时的这个数据小于基准点,所以i++为下一个左边需要比较的数 */

     

      }

     

      while(i!=j && array[i]<array[j]) /* 此时基准点为 array[j] */

     

      i++;

     

      /* 上面的循环结束,说明在左边找到一个比基准的大的数 */

     

      if(i!=j){

     

      array[i] = array[i] ^ array[j]; /* 将基准点从j处换到i处 */

     

      array[j] = array[i] ^ array[j];

     

      array[i] = array[i] ^ array[j];

     

      j--; /* 基准点已经放到i的地方去了。下一个循环我们将比较j--处的数据是否比基准点小 */

     

      }

     

      };

     

      /* 上面的循环结束,说明已经将数据安装 {小于Key的数据}Key{大约Key的数据} 排列。此时i=j指向基准点 */

     

      quick_sort(array, left, i-1);

     

      quick_sort(array, i+1, right);

     

      }

     

      }

  • 相关阅读:
    实验6.1
    SOA
    python的镜像包安装
    中文分词:双向匹配最大算法(BI-MM)
    从github中获取代码
    解决文件冲突
    创建分支
    上传本地文件到github
    mysql事务
    查询练习2
  • 原文地址:https://www.cnblogs.com/yuezhihua/p/2383694.html
Copyright © 2011-2022 走看看