有关快速排序-java实现

 1     /**
 2      * 快速排序的简介写法(完美)
 3      * @param num 目标排序数组
 4      * @param leftIndex 每次处理的左端索引
 5      * @param rightIndex 每次处理的右端索引
 6      */
 7     public static void quickSort2(int[] num,int leftIndex,int rightIndex){
 8         if (leftIndex>rightIndex)
 9             return;
10         int leftI=leftIndex;
11         int rightI=rightIndex;
12         //基准数,依次将数组中的数分为两部分
13         int midNum=num[leftIndex];
14         int temp=0;
15         //递归出口
16         while (leftI<rightI){
17             //寻找左端第一个大于基准数的索引
18             while (num[rightI]>=midNum&&leftI<rightI){
19                 rightI--;
20             }
21             //寻找右端第一个大于基准数的索引,注意最后的两索引只会相等
22             while (num[leftI]<=midNum&&leftI<rightI){
23                 leftI++;
24             }
25             //交换左右端数
26             if (leftI<rightI){
27                 temp=num[leftI];
28                 num[leftI]=num[rightI];
29                 num[rightI]=temp;
30             }
31         }
32         //基准数交换。应当与左端最大的数交换
33         num[leftIndex]=num[leftI];
34         num[leftI]=midNum;
35         //递归处理左右的数组
36         quickSort2(num,leftIndex,rightI-1);
37         quickSort2(num,leftI+1,rightIndex);
38     }

 

posted @ 2023-03-29 17:34  Mexcellent  阅读(37)  评论(0)    收藏  举报