黑马程序员技术交流社区

标题: 新手C语言排序算法之快速排序实现--->欢迎交流 [打印本页]

作者: YuePr    时间: 2015-12-2 22:54
标题: 新手C语言排序算法之快速排序实现--->欢迎交流
  1. //快速排序
  2. #include <stdio.h>

  3. #define ARRAY_LEN (7)

  4. typedef enum EBool
  5. {
  6.     EBool_false = 0,
  7.     EBool_true,
  8. }EBool;

  9. void QuickSort(int num[], int arrayLen)
  10. {
  11.     int i = 0;
  12.     int j = arrayLen - EBool_true;
  13.     int midNum = num[EBool_false];

  14.     if(arrayLen > 1)
  15.     {
  16.         while(i < j)
  17.         {
  18.             for(j = arrayLen - EBool_true; j > i; -- j)//从后往前
  19.             {
  20.                 if(num[j] < midNum)
  21.                 {
  22.                     num[i] = num[j];
  23.                     break;
  24.                 }
  25.             }

  26.             for(i = EBool_false; i < j; ++ i)//从前往后
  27.             {
  28.                 if(num[i] > midNum)
  29.                 {
  30.                     num[j] = num[i];
  31.                     break;
  32.                 }
  33.             }
  34.         }
  35.         num[i] = midNum;
  36.         QuickSort(num, i);
  37.         QuickSort(num + i + 1, arrayLen - 1 - i);
  38.     }
  39.    
  40. }

  41. int main(int argc, char** argv)
  42. {
  43.     int i = EBool_false;
  44.     int num[ARRAY_LEN] = {3,15,2,1,18,4,20};

  45.     QuickSort(num, ARRAY_LEN);

  46.     for(i = EBool_false; i < ARRAY_LEN; ++ i)
  47.     {
  48.         printf("%d\n", num[i]);
  49.     }
  50.     return EBool_false;
  51. }
复制代码

作者: YuePr    时间: 2015-12-2 22:55
今天晚上考试还弄错了一个,预处理指令->宏定义的题目...真是不应该。
作者: 米易雅克    时间: 2015-12-3 17:59
你很牛逼啊!必须顶顶。。。!!!!!!
作者: iamcominghm    时间: 2015-12-14 18:01
这个为什么要用递归啊...
作者: YuePr    时间: 2015-12-14 18:10
谢谢 大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2