Ai
1 Star 0 Fork 0

Marcho/Dev-Examples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
QuickSort.java 2.01 KB
一键复制 编辑 原始数据 按行查看 历史
Marcho 提交于 2020-06-21 22:28 +08:00 . 原型模式结束
import java.util.Arrays;
import java.util.Random;
/**
* 挖坑法实现的快速排序
*/
public class QuickSort {
public static void main(String[] args) {
int[] array = {4, 7, 6, 5, 3, 2, 9, 1};
sort(array, 0, array.length - 1);
System.out.println(Arrays.toString(array));
}
public static void sort(int[] array, int start, int end) {
if (start >= end) {
return;
}
int pivotIndex = partition(array, start, end);
sort(array, start, pivotIndex - 1);
sort(array, pivotIndex + 1, end);
}
/**
* @return int
* @Author MRC
* @Description 采用分治法 返回基准元素位置
* @Date 17:52 2020/5/25
* @Param [arr 被操作的数组, start 分治法起始位置, end 结束位置]
**/
private static int partition(int[] arr, int start, int end) {
//取首位为基准元素。//也是坑的位置
int pivotIndex = start;
//基准元素的值
int pivot = arr[pivotIndex];
//左边指针
int left = start;
//右边指针
int right = end;
/**
* 大循环用于判断总体循环
* 在左右指针指向同位置后
* 结束循环
*/
while (right >= left) {
/**
* 右指针
*/
while (right >= left) {
if (arr[right] < pivot) {
arr[pivotIndex] = arr[right];
pivotIndex = right;
left++;
break;
}
right--;
}
/**
* 左指针
*/
while (right >= left) {
if (arr[left] > pivot) {
arr[pivotIndex] = arr[left];
pivotIndex = left;
right--;
break;
}
left++;
}
}
arr[pivotIndex] = pivot;
return pivotIndex;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/marchocode/Dev-Examples.git
git@gitee.com:marchocode/Dev-Examples.git
marchocode
Dev-Examples
Dev-Examples
master

搜索帮助