- 将排序范围中的第一个数字作为基准数,在定义两个变量start ,end
- start从前往后找比基准数大的,end从后往前找比基准数小的。
- 找到之后交换start和end指向的元素,并循环这一过程,直到start和end处于同一位置,该位置是基准数在数组终应存入的位置,再让基准数归位。
- 归位后的效果:基准数左边的,比基准数小,基准数右边的,比基准数大。
import java.util.Random; public class Demo01 { public static void main(String[] args) { int[]arr={6,1,2,7,9,3,4,5,10,8}; quickSort(arr,0,arr.length-1); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } } public static void quickSort(int[]arr,int i,int j){ int start=i; int end=j; if (start>end){ return; } int baseNumber=arr[i]; while(start!=end){ //利用end,从后往前找 while(true){ if (end<=start|| arr[end]<baseNumber){ break; } end--; } while(true){ if (end<=start||arr[start]>baseNumber){ break; } start++; } int temp=arr[start]; arr[start]=arr[end]; arr[end]=temp; } int temp=arr[i]; arr[i]=arr[start]; arr[start]=temp; quickSort(arr,i,start-1); quickSort(arr,start+1,j); } }
JAVA快速排序
本文详细介绍了如何使用Java实现快速排序算法,通过基准数法对数组进行排序,确保基准数左侧元素小于它,右侧元素大于它。展示了整个排序过程和关键代码段。
摘要由CSDN通过智能技术生成