import java.util.Arrays;
import org.junit.Test;
/**
* @ClassName: QuickSort
* @Description: 快速排序,时间复杂度O(n*logn),不稳定的排序
* @date 2018-6-7 下午12:51:40
*/
public class QuickSort {
public static void swap(int[] a,int i,int j){
if (i!=j) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
public static int partition(int[] a,int left,int right){
int pivot=a[left];
int i=left,j=right;
while (i!=j) {
while (a[j]>=pivot&&i<j) {//找到比基准数小的元素下标
j--;
}
while (a[i]<=pivot&&i<j) {//找到比基准数大的元素下标
i++;
}
if(i<j){
swap(a, i, j);
}
}
//到这里,说明i==j,也就是找到了基准数的位置
swap(a, left, i);
return i;
}
public static int quickSort(int[] a,int left,int right){
if(left>right){//如果left>right就不需要排序了
return 0;
}
int pivotIndex=partition(a, left, right);
quickSort(a, left, pivotIndex-1);
quickSort(a, pivotIndex+1, right);
return 1;
}
@Test
public void test(){
int[] a={1,2,3,4,5,6,7,8,9,10};
// int[] a={1,32,3,14,5,6,17,8,97,10};
quickSort(a, 0, a.length-1);
System.out.println(Arrays.toString(a));
}
}
快速排序
最新推荐文章于 2023-12-01 23:14:38 发布