什么是快速排序?

package com.example.demo;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

public class QuickSortWithStack {
public static void quickSort(int[] arr,int startIndex,int endIndex) {
//递归的退出条件:递归最后一层左边的元素小于或等于右边元素的位置
if(startIndex >= endIndex) {
return;
}
//得到基准元素的位置

//取第一个位置的元素作为基准元素
int pivot = arr[startIndex];
int left = startIndex;
int right = endIndex;

/*
* 第一步:选定基准元素pivot,设置左指针left和右指针right
* 第二步:第1次循环,从right指针开始,让指针指向的元素与基准元素作比较。
* 第三步:如果大于或等于pivot则指针左移,否则停止移动转到left指针
* 第四步:如果left指针指向的元素小于或等于pivot,则指针向左移动
* 第五步:如果大于,则转到right指针
* 第六步:直到left指针和right指针相遇
*/
while(left != right) {
while(left<right && arr[right] > pivot) {
right--;
}
while(left<right && arr[left] <= pivot ) {
left++;
}
if(left<right) {
int p = arr[left];
arr[left] = arr[right];
arr[right] = p;
}
}
//pivot和指针重合点交换
arr[startIndex] = arr[left];
arr[left] = pivot;

int pivotIndex = left;
//根据基准元素,递归调用
quickSort(arr,startIndex,pivotIndex-1);
quickSort(arr,pivotIndex+1,endIndex);
}

public static void main(String[] args) {

int[] arr={9,4,32,2,6};
// int[] arr= {4,7,6,5,3,2,80,1};

quickSort(arr, 0, arr.length-1);
System.out.println(Arrays.toString(arr));
}
}

转载于:https://www.cnblogs.com/dongma/p/10092853.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值