快速排序算法实现
2013-11-19 11:21
155 查看
#include <iostream> #include <cstdlib> using namespace std; void quickSort(int *data, int length, int start, int end); int main() { int test[] = {4, 3, 6, 2, 9, 0}; try { quickSort(test, 6, 0, 5); } catch(char *ch) { cout << ch << endl; return 1; } for (int i=0; i<6; i++) cout << test[i] << " "; cout << endl; return 0; } void swap(int* a, int* b) //交换数据 { int temp = *a; *a = *b; *b = temp; } int random(int start, int end) //随机数生成器 { return start+(end-start)*rand()/(RAND_MAX+ 1); } int partition(int *arr, int length, int start, int end) //求得分界值 { if (arr==NULL || length<=0 || start<0 || end>=length) throw("Parameter error!"); int index = random(start, end); if (index != end) { swap(&arr[index], &arr[end]); } int small = start-1; for (int i=start; i<end; i++) { if (arr[i] < arr[end]) { small++; if (small != i) { swap(&arr[small], &arr[i]); } } } small++; swap(&arr[small], &arr[end]); return small; } void quickSort(int *data, int length, int start, int end) //递归快速排序 { if (start == end) return; int index = partition(data, length, start, end); if (index > start) { quickSort(data, length, start, index-1); } if (index < end) { quickSort(data, length, index+1, end); } }
相关文章推荐
- 【模板小程序】快速排序算法实现(递归+非递归)
- 快速排序算法 原理及golang语言实现
- 八大排序之快速排序算法-python实现
- 快速排序算法学习及C++代码实现
- 快速排序算法-C语言实现 (转)
- QUicKSort 快速排序算法 c实现
- 快速排序算法原理与实现
- 一种排序快速排序算法的实现
- 快速排序算法原理与实现
- java编程题:用Java实现一个快速排序算法
- 快速排序算法 函数实现
- 使用分割思想实现快速排序算法
- 快速排序算法的代码实现
- C#实现快速排序算法
- Ruby实现的3种快速排序算法
- 快速排序算法的Python实现
- js 中的快速排序算法简单实现
- 快速排序算法的C语言实现
- 快速排序算法(Java实现)
- CSS快速排序算法实现10000条数据颠倒顺序的实例代码