鱼C论坛

 找回密码
 立即注册
查看: 2462|回复: 0

[技术交流] 小甲鱼快速排序代码的不完整性

[复制链接]
发表于 2018-4-8 20:30:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 毛毛虫爬行中 于 2018-4-8 20:35 编辑

这个代码在基数小的排序(小于50个数左右)中看不出任何弊端,超过50之后运行时间会慢慢变大,已经变成慢排了。达到1000以上的时候就崩溃了,程序出错。所以还是需要改进的,对于边界和效率没有控制好,有太多重复。
  1. /**
  2. * @brief 交换元素
  3. *
  4. * @param array
  5. * @param i
  6. * @param j
  7. */
  8. void Swap (int array[], int i, int j)
  9. {
  10.     int temp = array[i];
  11.     array[i] = array[j];
  12.     array[j] = temp;
  13. }

  14. /**
  15. * @brief 快速排序
  16. *
  17. * @param array
  18. * @param size
  19. */
  20. [color=Red]void QuickSort (int array[], int left, int right)
  21. {
  22.     int i = left;
  23.     int j = right;
  24.     int pivot = array[(left + right) /2];

  25.     while (i <= j)
  26.     {
  27.         while (array[i] < pivot)
  28.         {
  29.             i++;
  30.         }
  31.         while (array[j] > pivot)
  32.         {
  33.             j--;
  34.         }
  35.         if (i <= j)
  36.         {
  37.             Swap (array, i, j);
  38.             i++;
  39.             j--;
  40.         }
  41.         if (i < right)
  42.         {
  43.             QuickSort(array, i, right);
  44.         }
  45.         if (j > left)
  46.         {
  47.             QuickSort(array, left, j);
  48.         }
  49.     }
  50. }

  51. //测试函数
  52. void Sort_test2 ()
  53. {
  54.     int sorted = 0;
  55.     int size = 2048;
  56.     int MAX = 1024;

  57.     int * array = NULL;
  58.     array = (int *)malloc (sizeof (int) * size);
  59.     GenerateDate (array, size, MAX);
  60.     PrintData (array, size);

  61.     QuickSort (array, 0, size-1);
  62.     printf ("\n#########\n");
  63.     sorted = PrintData (array, size);

  64.     if (!array)
  65.         free(array);
  66.     array = NULL;
  67. }

  68. int main()
  69. {
  70.     Sort_test2();
  71.     return 0;
  72. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 10:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表