package QuickSort;
import java.util.Arrays;
public class quickSort {
public static void main(String[] args) {
int [] nums = {6,1,2,7,9,3,4,5,10,8};
System.out.println("快速排序前:"+ Arrays.toString(nums));
quickSort(nums,0,nums.length-1);
System.out.println("快速排序后"+Arrays.toString(nums));
}
public static void quickSort(int[] nums,int start,int end){
if(start> end) return;
int i = start;//i为左指针
int j = end;//j为右指针
int base =nums[start];//先用第一个数当基准值
while (i<j){
while(i<j && nums[j]>=base) j--;//往前找,找比第一个数小的
while (i<j && nums[i]<=base) i++;//往后找,找比第一个数大的
if(i<j){//找到了,交换值
swap(nums,i,j);
} //[6,1,2,5,4,3,9,7,10,8]
}//当i=j
swap(nums,start,i);//找到中间值了,与第一个数交换
quickSort(nums,start,j-1);//j的位置是最中间的那个数
quickSort(nums,j+1,end);
}
public static void swap(int[] nums,int left,int right){
int temp = nums[left];
nums[left]=nums[right];
nums[right] = temp;
}
}
快速排序-详细注释-适合新手小白
最新推荐文章于 2024-06-16 22:31:26 发布