/**
* 获取分区下标
*
* @param source 源数组
* @param start 起始位置
* @param end 结束位置
* @return 分区下标
*/
private int partition(int[] source, int start, int end) {
int m = start;
int value = source[m];
while (start <= end) {
//判断左移还是右移
if ((start < m) && (source[start] > value) || ((start > m) && (source[start] < value))) {
swap(source, m, start);
//交换位置
int t = m;
m = start;
start = t;
}
start++;
}
return m;
}
private void swap(int[] source, int a, int b) {
int temp = source[a];
source[a] = source[b];
source[b] = temp;
}
// 排序方法
private void sort(int[] source, int start, int end) {
int m = partition(source, start, end);
if (end - start <= 1) {
return;
}
sort(source, start, m - 1);
sort(source, m + 1, end);
}
快速排序 Java 实现
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 上篇我们讲了冒泡排序,这次我们讲它的升级版快速排序,“快速”,一看就是个好算法~ 快速排序(QuickSort)是...