1.什么是快速排序
快速排序是一种常用的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后再按此方法对这两部分记录分别进行快速排序,以达到整个序列有序的目的。在Java中,可以通过递归实现快速排序。具体实现可以参考引用和引用中的代码。其中,引用中的代码实现了快速排序的主要逻辑,通过递归实现了对数组的分区和排序
2.排序思路
1.定义待排序数组当中的第一个位置作为基准数
2.定义指针j 从后往前移动,查找第一个比基准数小的数值,停止。
3.定义指针i 从前往后移动,查找第一个比基准数大的数值,停止。
4.i和j的数值进行交换
5.重复2 3 4 步,直到i和j相遇。
6.基准数和相遇位置进行交换,这个时候基准数到达正确位置。
7.以基准数为起始点,分成左右两部分,重复上述所有步骤,直到数据都被拆分开为止。
3.代码实现
public static void main(String[] args) {int[] arr = new int[]{2, 36, 78, 79, 76, 999, 890, 8, 3};kuaisu(arr,0, arr.length-1);//快速排序System.out.println(Arrays.toString(arr));}
//快速排序public static void kuaisu(int[] arr,int left,int right){if(left>=right){return;}//保存基准数int base=arr[left];int j=right;int i=left;while (i!=j){//j找比基准数小的值while (arr[j]>base&&i<j){j--;}//i找比基准数大的值while (arr[i]<=base&&i<j){i++;}//i和j进行交换int temp=arr[j];arr[j]=arr[i];arr[i]=temp;}//i和j相遇,基准数和相遇位置进行交换arr[left]=arr[i];arr[i]=base;//交换完成之后基准数到达正确位置//左边kuaisu(arr,left,i-1);//右边kuaisu(arr,i+1,right);}