快速排序(递归)
2012-07-16 16:44
363 查看
#include <stdio.h> #include <stdlib.h> #define NUM_OF_ARRAY 100 void quick_sort(int *array, int left, int right) { int old_left = left; int old_right = right; int standard_data = array[left]; printf("."); while(left < right) { while((array[right] >= standard_data) && (left < right)) right--; if(left != right) { array[left] = array[right]; left++; } while((array[left] <= standard_data) && (left < right)) left++; if(left != right) { array[right] = array[left]; right--; } } array[left] = standard_data; if(old_left < left) quick_sort(array, old_left, left-1); if(old_right > left) quick_sort(array, left+1, old_right); } int main(int argc, char *argv[]) { int arr[NUM_OF_ARRAY] = {0}; int i=0; srand(getpid()); for(i=0; i<NUM_OF_ARRAY; i++) { arr[i] = rand(); printf("%d\n", arr[i]); } quick_sort(arr, 0, NUM_OF_ARRAY-1); printf("\n"); for(i=0; i<NUM_OF_ARRAY; i++) { printf("%d\n", arr[i]); } return 0; }
相关文章推荐
- 快速排序递归与非递归代码实现与思考
- 快速排序的非递归实现
- 快速排序partition过程常见的两种写法+快速排序非递归实现
- 快速排序的非递归实现
- 快速排序的js递归实现
- 快速排序非递归实现
- 非递归快速排序和非递归快速乘幂
- 快速排序的递归和非递归实现
- 快速排序--递归实现
- 快速排序lua实现 递归和栈两种实现
- 快速排序Java源码(递归和非递归)
- 快速排序的非递归实现
- C/C++面试题(三) 推断二叉树、快速排序递归实现、递归判断数组递增
- 快速排序的两重递归实现
- Java语言描述:递归与分治策略之合并排序与快速排序
- 快速排序的递归和非递归实现
- 快速排序的递归和非递归实现 -----C++、JAVA代码实现
- 快速排序的递归实现算法。
- C代码学习,快速排序,左右并进,递归调用(另注释)
- 快速排序 : 分治和递归思想