快速排序实现 (Java)

快速排序实现

  • 核心:找到支点,将小于支点的元素放到左侧,大于支点的元素放到右侧
public void quickSort(int []nums, int left, int right){
if(left < right){
int i = partition(nums, left, right) ; // 确定支点位置
quickSort(nums, left, i - 1);
quickSort(nums, i + 1, right);
}
}
private int partition(int[] nums, int start, int end){
int random = new Random().nextInt(end - start + 1) + start;
int p1 = start - 1; // 小于random位置整数的前一个位置
int p2 = start; // 当前判断的位置
swap(nums, random, end); // 将支点交换到最后一个位置
while(p2 < end){
if(nums[p2] < nums[end]){
p1++;
swap(nums,p1, p2);
}
p2++;
}
//将支点放到最后一个小于支点位置的后一个位置
p1++;
swap(nums, p1, end);
return p1;
}
private void swap(int[] nums, int i, int j){
if(i != j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
posted @   叶拂衣  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示