package com.chen.ArrayList;
import java.util.Arrays;
public class Test03 {
public static void main(String[] args) {
//快速排序(按照升序进行排列
int[] arr= {11, 2, 3, 8, -4};
sort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
/*
快速排序的思想:在数组中取一个参照的值(key)一般取左侧的第一个数
然后定义两个变量i,j从数组的左右依次开始向中间移动,所在数组位置的值与key进行比较
*/
}
//这个方法三个参数:arr要排序的那个数组,你要对arr【low】--》arr【high】段排序
public static void sort(int[] arr,int low,int high){
if(low>=high){
return;
}
//定义两个变量分别从数组的两侧开始
int i=low;
int j=high;
int key=arr[i];
while(key<=arr[j]&&i<j){
j--;
}
while(i<j){
//如果右侧的数比key大则位置不变,变量j向左移动,直到比key小
while(key<=arr[j]&&i<j){
j--;
}
//如果左侧的数比key小则位置不变,变量i向右移动,直到比key大
while (key>=arr[i]&&i<j){
i++;
}
//然后将上述的两个停下来的数进行交换
if(i<j){
int m=arr[i];
arr[i]=arr[j];
arr[j]=m;
}
}
//到最后i与j会相遇,并且这个数一定小于key,此时将key值与这个位置的数进行交换
arr[low]=arr[i];
arr[i]=key;
sort(arr,low,i-1);//对基准左侧进行重复操作
sort(arr,i+1,high);//对基准右侧进行重复操作
}
}
数组的排序《三》快速排序
最新推荐文章于 2023-02-10 19:09:25 发布