快速排序 普通和随机版本
2011-06-11 20:29
381 查看
#include <stdio.h> #include <stdlib.h> template <class Type> void quick_sort(Type a[], int left, int right) { if (left < right) { int p = partion(a, left, right); quick_sort(a, left, p - 1); quick_sort(a, p + 1, right); } } template <class Type> int partion(Type a[], int left, int right) { int i = left; int j = right + 1; Type divide = a[left]; while (true) { while (a[++i] < divide && i < right); while (a[--j] > divide); if (i >= j) { break; } swap(&a[i], &a[j]); } a[left] = a[j]; a[j] = divide; return j; } template <class Type> void swap(Type* a, Type* b) { Type tmp = *a; *a = *b; *b = tmp; } int main(int argc, char** argv) { int* a = (int*) malloc(100 * sizeof(int)); int i = 0; while (scanf("%d", &a[i++]) != EOF && a[i - 1] != 0 && i < 100) { quick_sort(a, 0, i - 1); } int n = 0; for (n = 0; n < i; n++) { printf("%d/t", a ); } }
#include <stdio.h> #include <stdlib.h> template <class Type> void quick_sort(Type a[], int left, int right) { if (left < right) { int p = partion(a, left, right); quick_sort(a, left, p - 1); quick_sort(a, p + 1, right); } } template <class Type> int partion(Type a[], int left, int right) { int i = left; int j = right + 1; Type divide = a[left]; while (true) { while (a[++i] < divide && i < right); while (a[--j] > divide); if (i >= j) { break; } swap(&a[i], &a[j]); } a[left] = a[j]; a[j] = divide; return j; } template <class Type> void swap(Type* a, Type* b) { Type tmp = *a; *a = *b; *b = tmp; } int main(int argc, char** argv) { int* a = (int*) malloc(100 * sizeof(int)); int i = 0; while (scanf("%d", &a[i++]) != EOF && a[i - 1] != 0 && i < 100) { quick_sort(a, 0, i - 1); } int n = 0; for (n = 0; n < i; n++) { printf("%d/t", a ); } }
相关文章推荐
- python版本的随机快速排序
- 普通快速排序与随机快速排序
- 分治法_随机快速排序
- 算法导论 第七章 随机快速排序
- 每日编程3之快速排序随机化版本
- 算法初级02——荷兰国旗问题、随机快速排序、堆排序
- 快速排序普通法与中值枢纽元法以及三切法
- Randomized Algorithm 随机算法 和 随机快速排序例子
- 【22】-快速排序随机选择元素的优雅解法
- 快速排序的随机化版本代码
- 第七章快速排序之“快速排序Hoare版本HOARE-QUICKSORT”(思考题7-1)
- 每日编程7之快速排序非递归版本
- 快速排序的三种实现方式以及非递归版本
- 算法导论 第2版 7.3 快速排序随机化版本
- 快速排序(C语言版本)
- 【22】-快速排序随机选择元素的优雅解法
- 快速排序随机初始基准数
- 快速排序(递归版本)
- 算法导论7.3快速排序的随机化版本
- 非随机快速排序C语言实现