快速排序
通过一趟排序将要排序的数字分割成独立的两部分,其中一部分的数据比另一部分所有数据都小,然后再对这两组数据进行排序,整个排序过程递归进行。
package com.sortAlgorithm;
import java.util.Arrays;
public class quickSort {
public static void main(String[] args){
int[] arr = {-9,78,0,23,-567,70,-1,900,4561};
quickSort quickSort = new quickSort();
quickSort.quick(arr,arr.length-1,0);
System.out.println(Arrays.toString(arr));
}
public void quick(int[] arr,int right, int left){
int l = left;
int r = right;
int middle = arr[(left+right)/2];
int temp = 0; //作交换使用
//将比middle小的值放在middle左侧,大的放在右侧
while(l<r){
//寻找到不符合规范的值
while(arr[l]<middle){
l++;
}
while(arr[r]>middle){
r--;
}
//判断是否已经实现了左右两端数字的排序功能
if(l>=r){
break;
}
//交换
temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
//如果有一端已经到达了middle的位置,要做一下另一端的处理
if(arr[r] == middle){
l++;
}
if(arr[l] == middle){
r--;
}
}
//如果l==r,要自增自减
if(l==r){
l++;
r--;
}
//递归的过程
if(l<right){
quick(arr,right,l);
}
if(r>left){
quick(arr,r,left);
}
}
}
3128

被折叠的 条评论
为什么被折叠?



