快速排序
来源:互联网 发布:办公室软件视频 编辑:程序博客网 时间:2024/05/08 04:33
参考高一凡《数据结构算法与解析》
(小白一枚,本文帮助理解快速排序实现方法,不深入剖析)
void QSort(int low,int high){ int m; if(low<high){ //attention:第一趟排序下来,序号m左边的数据都小于v[m],且未排序;右边的数据都大于v[m],且未排序 m=Partition(low,high); //递归 QSort(low,m-1); //对序号m左边的数据进行排序 QSort(m-1,high);//对序号m右边的数据进行排序 }}int partition(int low,int high){ int axis; /*int temp=rand()%(high-low)+low; //随机选择一个数作为轴 if(temp!=low) swap(temp,v[low]); */ axis=v[low]; //选择v[low]作为轴 //确保低端(左边)数据小于轴axis, 高端(右边)数据大于轴axis while(low<high){ while(low<high && v[high]>=axis) high--; //从数组的最右边开始查找第一个小于axis的元素 v[low]=v[high]; //直至遇到第一个小于axis,将此值移至低端 while(low<high && v[low]<=axis) low++; //从数组的最左边开始查找第一个大于axis的元素 v[high]=v[low]; //直至遇到第一个大于axis,将此值移至高端 } //分别寻找两端下一个不满足要求的元素 v[low]=axis; //此时low=high;将轴axis放置此处,满足左边数据小于axis, 右边数据大于axis return low;}
阅读全文
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- session.setAttribute和session.getAttribute
- 成为ACMer
- Gradle 的编译周期
- 程序安全
- spring thymeleaf中文乱码问题
- 快速排序
- 微信小程序开发—(十七)animation API(2)
- STM8S_003_TIM定时中断
- Redis动态增加节点
- 同步代码和同步方法、锁的理解
- ubuntu笔记5
- Java中创建对象的几种方式
- 程序员 很装逼的头注释
- Android Architecture Componets