public class Text {
public static void main(String[] args) throws ParseException {
int[] arr={6,1,2,7,9,3,4,5,10,8};
sort(0, arr.length-1,arr );
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
private static void sort(int startIndex,int endIndex,int[] arr) {
int start=startIndex;
int end=endIndex;
//递归出口
if (start>=end){
return;
}
//选第一个值为中间参考值
int num=arr[startIndex];
while (start!=end){
//头指针和尾指针从两极不断向中间靠拢直到相等为止
//头<中<尾
while (true){
//尾指针先动,只要尾指针符合要求则不断往中间走
//尾指针所指的数应大于中间参考值
//一旦尾指针所指的数小于中间参考值,则切换为头指针
if (end<=start||arr[end]<num){
break;
}
end--;
}
while (true){
//头指针后动,只要头指针符合要求则不断往中间走
//头指针所指的数应小于中间参考值
//一旦头指针所指的数大于中间参考值,则开始交换
if (end<=start||arr[start]>num){
break;
}
start++;
}
int temp=arr[end];
arr[end]=arr[start];
arr[start]=temp;
}
//将中间参考值交换到中间
int temp=arr[startIndex];
arr[startIndex]=arr[start];
arr[start]=temp;
//以中间值为界,可看成左右两个数组
//在左数组调用方法
sort(startIndex,start-1,arr);
//在右数组调用方法
sort(start+1,endIndex,arr);
}
}
快速排序 java
最新推荐文章于 2024-09-27 00:45:01 发布
本文详细介绍了如何使用Java编程语言实现冒泡排序算法的递归版本,通过示例代码展示了从数组中按升序排列的过程以及关键的递归逻辑。
摘要由CSDN通过智能技术生成