数据结构--排序算法--快速排序
2017-05-17 20:13
288 查看
思路:选择数组第一个元素,是的数组中小于等于其的数放在这个数的左边,大于其的数放在右边,左右两边分别调用递归排序,则最后都有序。
首先将划分值放在数组最后,建立一个小于等于区间,初始长度为0,从左往右遍历数组,当前值大于划分值时,继续遍历,当前值小于划分值时,将当前值与小于等于区间后的数调换位置,并将小于等于区间向右扩一个位置,当遍历到最后一个元素,将划分值与小于等于区间后第一个值对换,即完成一次排序。
int partition(int * A, int left, int right) { int i= left,j= right; int x = A[left]; while (i < j) { while (i <j && A[j]>x) --j; if (i < j) A[i++] = A[j]; while (i <j&&A[i] < x) ++i; if (i < j) A[j--] = A[i]; } A[i] = x; return i; } void qsort(int * A, int left, int right)//递归将关键字两边分成有序的数组 { if (left < right) { int p1 = partition(A, left, right); qsort(A, left, p1 - 1); qsort(A, p1 + 1, right); } } int* quickSort(int* A, int n) { qsort(A, 0, n - 1); return A; } void main() { for (int i = 0; i < n; i++) { cout << A[i] << endl; } quickSort(A, n); cout << "快速排序后的结果为: " << endl; for (int i = 0; i < n; i++) { cout << A[i] << endl; } }
相关文章推荐
- 数据结构之排序算法二:堆排序,快速排序,归并排序
- 数据结构-排序算法详解(插入排序,希尔排序,堆排序,归并排序,快速排序,桶式排序)
- 【算法与数据结构必备】PHP常用排序算法:冒泡,快速排序,插入排序(一维数组)
- 数据结构 学习笔记(十一):排序(下):快速 / 表 / 桶 / 基数 排序,排序算法的比较
- 数据结构-快速排序
- 【排序算法】快速排序
- 快速排序----排序算法
- 排序算法解析--冒泡排序,选择排序,快速排序
- 数据结构学习笔记3.2—快速排序
- 排序算法(快速排序、选择排序、冒泡排序、2分搜索)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 【数据结构】排序算法(二)之交换排序之快速排序(QuickSort)
- 排序算法(堆排序,归并排序,快速排序、选择排序、直接插入排序)
- 排序算法(4)——快速排序
- 排序算法之快速排序
- 数据结构----快速排序
- 数据结构面试之十一——排序2(归并、快速、堆排序)
- 排序算法_快速排序、随机快速排序
- 排序算法之快速排序
- 常用排序算法C++实现(堆排序,快速排序,归并排序,基数排序)