快速排序quicksort
2016-08-25 16:04
197 查看
快速排序quicksort
流程图
Created with Raphaël 2.1.0开始设定主元,划分数组对主元两边的数组进行快速排序数组是否已经不可分输出最终数组yesno划分数组
这是快速排序算法最关键的部分,实现了对数组A[p…r]的原址重排//将数组最后一个元素作为主元,重排一次之后,找到它所在的下标(类似断点,将原数组划分开) int Partition(int* A, int p, int r) { //定义主元 int x = A[r]; //定义游标 int i = p - 1; //遍历游标右侧的数据 for (int j = p; j < r; j++) { //小于主元的数放游标左边 if (A[j] <= x) { //游标右移一位 i += 1; //游标对应元素赋值 int temp = A[i]; A[i] = A[j]; A[j] = temp; } } //遍历一次之后将主元放中间 int temp = A[i + 1]; A[i + 1] = A[r]; A[r] = temp; return i + 1; }
对数组进行迭代排序
这一步是快速排序的迭代的整体排序,包含了对子数组的快速排序//此处使用QuickSort迭代 int Quicksort(int* A, int p, int r) { if (p < r) { int q = Partition(A, p, r); Quicksort(A, p, q - 1); Quicksort(A, q + 1, r); } return 0; }
主函数
定义了一个乱序的数组,然后使用快速排序,实现快速排序int main() { int A[] = { 2,1,4,6,5,3,8,7,9,10 }; int p = 0; int r = 9; Quicksort(A, p, r); for (int i = 0; i <= r; i++) { cout << A[i] << endl; } getchar(); return 0; }
目录
用[TOC]来生成目录:
快速排序quicksort
流程图
划分数组
对数组进行迭代排序
主函数
目录
相关文章推荐
- 快速排序quickSort
- 快速排序Quicksort
- 算法导论-------快速排序QuickSort
- 使用C++实现快速排序QuickSort
- 快速排序QuickSort
- Java快速排序QuickSort(实例)
- 快速排序QuickSort
- c++实现快速排序quickSort及运行实例结果
- 第七章快速排序之“快速排序QUICKSORT”
- c++实现快速排序quickSort及运行实例结果
- 快速排序QuickSort
- c++实现快速排序quickSort及运行实例结果
- 快速排序quicksort
- c++实现快速排序quickSort及运行实例结果
- C++实现快速排序QuickSort
- c++实现快速排序quickSort及运行实例结果
- 【项目3 - 体验复杂度之二 复杂度为O(nlogn) 的快速排序quicksort】
- c++实现快速排序quickSort及运行实例结果
- 递归-快速排序quickSort
- c++实现快速排序quickSort及运行实例结果