快速排序
来源:互联网 发布:网络管理需要掌握什么 编辑:程序博客网 时间:2024/05/16 11:18
/* 快速排序 * @param datas * @param left * 快速排序的起始位置 * @param right * 快速排序的终止位置 * @author sunyanqiang */public static void qiuckSort(int[] datas,int left,int right){ if (left < right) { //目的在于找中间值的下标。 int middle = findMiddle(datas,left,right); //对左一半进行快排 qiuckSort(datas, left, middle - 1); //对右一半进行快排 qiuckSort(datas, middle + 1, right); }else { return; }}/** * 找中间值的下标 * @param datas * @param left * @param right * @return * @author sunyanqiang */private static int findMiddle(int[] datas, int left, int right) { //定义一些变量 int leftIndex = left;//左指针 int rightIndex = right - 1;//右指针 int temp = datas[right];//参照物 int middle = 0;//中间值的下标 while(true){ //先写个死循环,到了要跳出的时候,break。 //左指针从左往右找数据,找比参照物大的,前提是不能越界(<right - 1) while(leftIndex < right && datas[leftIndex] <= temp){ //一直找数据 leftIndex ++; } //右指针从右往左找数据,找比参照物小得 while(rightIndex >= left && datas[rightIndex] >= temp){ //一直找数据 rightIndex --; } //判断左右指针有没有交叉 if (leftIndex < rightIndex) { //没有交叉 //交换左右指针位置上的值 change(datas, leftIndex, rightIndex); //继续找数据 continue; }else { //交叉了 middle = leftIndex; //交换左指针位置的值和参照物的值 change(datas, leftIndex, right); //跳出循环 break; } } return middle;}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 你会考虑创业公司吗
- 图片的压缩处理(为了节省服务器带宽)
- ios开发者收到了被拒绝 被警告的邮件JSPatch 的风险
- 源代码管理工具-GIT
- modbus基础
- 快速排序
- (二)数据结构之线性表
- GC算法 垃圾收集器(包括CMS收集)
- Random的简单用法
- crontab原理
- 错误:Uncaught SyntaxError: Unexpected token <
- 交换2变量的值
- 欢迎使用CSDN-markdown编辑器
- GoLang 遍历 map、slice、array方法和template遍历map