算法 -- Java实现快速排序(图解 + 代码实现)
来源:互联网 发布:前端算是程序员吗 编辑:程序博客网 时间:2024/05/22 13:48
排序思想:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
图解:
排序规则:
- 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
- 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];
- 3)从j开始向前搜索,即由后开始向前搜索(j=j-1即j- -),
- 找到第一个小于key的值A[j],A[i]与A[j]交换;
- 4)从i开始向后搜索,即由前开始向后搜索(i=i+1即i++),
- 找到第一个大于key的A[i],A[i]与A[j]交换;
- 5)重复第3、4、5步,直到 I=J;
- (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止。
- 找到并交换的时候i, j指针位置不变。
- 另外当i=j这过程一定正好是i+或j-完成的最后令循环结束。)
代码实现:
public static void quickSort(int[] array, int indexStart, int indexEnd) { int pivotIndex = (indexStart + indexEnd) / 2; // swap swap(array, pivotIndex, indexEnd); int k = partition(array, indexStart - 1, indexEnd, array[indexEnd]); swap(array, k, indexEnd); if ((k - indexStart) > 1) quickSort(array, indexStart, k - 1); if ((indexEnd - k) > 1) quickSort(array, k + 1, indexEnd);}private static int partition(int[] array, int left, int right, int pivot) { do { while (array[++left] < pivot) ; while ((right != 0) && array[--right] > pivot) ; swap(array, left, right); } while (left < right); swap(array, left, right); return left;}public static void swap(int[] array, int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp;}
DEMO下载
0 0
- 算法 -- Java实现快速排序(图解 + 代码实现)
- 算法 -- Java实现选择排序(图解 + 代码实现)
- 算法 -- Java实现冒泡排序(图解 + 代码实现)
- 快速排序算法java代码实现
- 图解算法练习--快速排序(GO实现)
- 图解算法练习--快速排序(PHP实现)
- 快速排序算法代码实现
- 算法代码实现之快速排序,Java实现
- 排序算法原理、图解、代码实现
- JAVA排序算法实现代码-快速(Quick Sort)排序
- 快速排序--Java实现代码
- Java 快速排序 代码实现
- java代码实现快速排序
- java快速排序代码实现
- java实现快速排序算法
- java实现快速排序算法
- 算法-快速排序-java实现
- 快速排序算法Java实现
- 第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器
- 我的单片机方法论1之概论
- 当遇到list浅拷贝的问题
- 并发 并行 同步 异步 多线程的区别
- missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0解决办法
- 算法 -- Java实现快速排序(图解 + 代码实现)
- 忙活了一周时间,开发了一个年会抽奖系统,免费开放给大家(含操作视频及下载地址)
- 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
- ubuntu apache php版本切换
- Java做acm所需要的基础知识之排序问题
- Docker完全解析 二、Docker镜像
- Android代码规范----按钮单击事件的四种写法
- django+apache+windows环境,css丢失解决办法
- eclipse中如何修改代码字体