Chinaunix首页 | 论坛 | 博客
  • 博客访问: 436603
  • 博文数量: 89
  • 博客积分: 2713
  • 博客等级: 少校
  • 技术积分: 938
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-18 21:19
个人简介

为了成为自由自在的人而奋斗!

文章分类

全部博文(89)

文章存档

2016年(5)

2015年(9)

2014年(2)

2013年(10)

2012年(1)

2011年(30)

2010年(32)

分类: C/C++

2011-09-08 14:02:59

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.     
  4. static void my_qsort(int *arr, int min, int max)
  5. {
  6.     int i, j, key;
  7.     
  8.     i = min;
  9.     j = max;
  10.     key = arr[i];
  11.     
  12.     /* 结束条件 */
  13.     if (min > max) {
  14.         return;
  15.     }
  16.     
  17.     while (i < j) {
  18.         while (i < j && arr[j] >= key) {
  19.             j--;
  20.         }
  21.         arr[i] = arr[j];
  22.         
  23.         while (i < j && arr[i] <= key) {
  24.             i++;
  25.         }
  26.         
  27.         arr[j] = arr[i];
  28.     }
  29.     
  30.     arr[i] = key;
  31.     
  32.     my_qsort(arr, min, i-1);
  33.     my_qsort(arr, i+1, max);
  34. }

  35. int main()
  36. {
  37.     int *arr;
  38.     int num, i;
  39.     
  40.     printf("enter numbers' count:\n");
  41.     scanf("%d", &num);
  42.     arr = (int *)malloc(num * sizeof(int));
  43.     if (arr == NULL) {
  44.         printf("malloc failed\n");
  45.         return -1;
  46.     }
  47.     
  48.     for (i = 0; i < num; i++) {
  49.         printf("enter %d num\n", i);
  50.         scanf("%d", &arr[i]);
  51.     }
  52.     
  53.     printf("sort before");
  54.     for (i = 0; i < num; i++) {
  55.         printf("%d ", arr[i]);
  56.     }
  57.     
  58.     
  59.     my_qsort(arr, 0, num - 1);
  60.     
  61.     printf("sort after");
  62.     for (i = 0; i < num; i++) {
  63.         printf("%d ", arr[i]);
  64.     }
  65.     printf("\n");
  66.     free(arr);
  67.     
  68.     return 0;
  69. }
 
阅读(764) | 评论(0) | 转发(0) |
0

上一篇:栈(链表实现)

下一篇:3年计划继续ing

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