Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24633
  • 博文数量: 12
  • 博客积分: 410
  • 博客等级: 下士
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-04 21:50
文章分类

全部博文(12)

文章存档

2013年(1)

2011年(1)

2010年(9)

2009年(1)

我的朋友

分类: C/C++

2013-10-08 16:25:45

源代码

点击(此处)折叠或打开

  1. //
  2. // main.c
  3. // cTest
  4. //
  5. // Created by HuangZizhu on 13-10-8.
  6. // Copyright (c) 2013年 HuangZizhu. All rights reserved.
  7. //

  8. #include <stdio.h>

  9. #define N (10)

  10. void quickSor(int *nums, int indexStart, int indexEnd);
  11. int partition(int *nums, int indexStart, int indexEnd);
  12. void exchange(int *nums, int p1, int p2);
  13. void printNums(int *nums, int count);

  14. int main()
  15. {
  16.     printf(">>>strat\n");
  17.     int nums[N] = {0, 4, 2, 5, 1, 3, -1, 19, 99, -100};
  18.     printNums(nums, N);
  19.     int mid = partition(nums, 0, N-1);
  20.     printNums(nums, N);
  21.     printf("mid = %d\n", mid);
  22.     quickSor(nums, 0, N-1);
  23.     printNums(nums, N);
  24.     return 0;
  25. }

  26. void quickSor(int *nums, int indexStart, int indexEnd)
  27. {
  28.     if (indexEnd > indexStart)
  29.     {
  30.         int indexMid = partition(nums, indexStart, indexEnd);
  31.         quickSor(nums, indexStart, indexMid-1);
  32.         quickSor(nums, indexMid+1, indexEnd);
  33.     }
  34.     
  35. }

  36. int partition(int *nums, int indexStart, int indexEnd)
  37. {
  38.     
  39.     int p2 = indexStart-1;
  40.     int p1;
  41.     
  42.     int target = nums[indexEnd];
  43.     
  44.     for (p1 = indexStart; p1 < indexEnd; p1++)
  45.     {
  46.         if (nums[p1] <= target)
  47.         {
  48.             p2++;
  49.             exchange(nums, p1, p2);
  50.             
  51.         }
  52.     }
  53.     exchange(nums, p2+1, indexEnd);
  54.     return p2+1;
  55. }

  56. void exchange(int *nums, int p1, int p2)
  57. {
  58.     int tmp = nums[p1];
  59.     nums[p1] = nums[p2];
  60.     nums[p2] = tmp;
  61. }

  62. void printNums(int *nums, int count)
  63. {
  64.     printf("numbers : ");
  65.     int i;
  66.     for (i = 0; i < count; ++i)
  67.     {
  68.         printf("%4d\t", nums[i]);
  69.     }
  70.     printf("\n");
  71. }


阅读(269) | 评论(0) | 转发(0) |
0

上一篇:博客已升级,请注意变更地址

下一篇:没有了

给主人留下些什么吧!~~