• 快速排序


     输入一组数据小到大排序

     

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

     

      }

     

      }

  • 相关阅读:
    字符菱形
    字符三角形
    10:超级玛丽游戏
    09:字符菱形
    08:字符三角形
    07:输出浮点数
    06:空格分隔输出
    05:输出保留12位小数的浮点数
    04:输出保留3位小数的浮点数
    02:输出第二个整数
  • 原文地址:https://www.cnblogs.com/yuezhihua/p/2383694.html
Copyright © 2020-2023  润新知