数据结构--排序算法--快速排序
来源:互联网 发布:淘宝 店招 代码 编辑:程序博客网 时间:2024/05/24 03:05
思路:选择数组第一个元素,是的数组中小于等于其的数放在这个数的左边,大于其的数放在右边,左右两边分别调用递归排序,则最后都有序。
首先将划分值放在数组最后,建立一个小于等于区间,初始长度为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;}}
阅读全文
0 0
- 数据结构--排序算法--快速排序
- [数据结构] 快速排序算法
- 数据结构-快速排序算法
- 数据结构与算法-快速排序
- 【数据结构与算法】快速排序
- [数据结构与算法]快速排序
- 数据结构与算法:快速排序
- 数据结构-快速排序-划分算法
- 数据结构_快速排序算法
- 数据结构与算法-快速排序
- 数据结构与算法-----快速排序
- 数据结构学习--快速排序算法
- 数据结构算法之快速排序
- [数据结构与算法]快速排序
- 【数据结构与算法】快速排序
- 数据结构算法之快速排序
- [数据结构和算法]快速排序
- 数据结构与算法--快速排序
- JS中的继承机制
- 对于Java的swing包中的列表框组件的用法
- openGL ES进阶教程(二)之全景图片
- java cookie跨域操作
- 【cocos2dx 3.3 lua】09 lua配置文件读写
- 数据结构--排序算法--快速排序
- 数据库与文件进行数据存储有哪些区别?
- 蓝桥杯第六届决赛:表格计算
- BZOJ 2241 [SDOI2011] 打地鼠
- 超声波风速风向仪的工作原理
- 对象的序列化和Socket简单使用
- 求次最小生成树,南阳118题 修路方案
- 侦察兵_dp
- 贪心-今年暑假不AC-nefuoj