交换排序---快速排序

 将需要排序的数组,定义一个标准数字,和一个开始位置(下标),和一个最后位置 (下标)   (标准数字是开始位置的数字)   (6,8,2,9,4,12,1)

 先在最后位置开始,把最后位置的数字和标准数字比较,如果最后位置的数字比标准数字大,则将最后位置向前移动一位

 如果最后位置的数字比标准数字小,则将最后位置的数字赋给开始位置的数字,依次比较,先将数组排成         (1,4,2,6,8,9,12)

 下面将(1,4,2,6,8,9,12)分成两个数组(1,4,2,6)和(8,9,12)

 再将(1,4,2,6)数组和(8,9,12)数组进行依次递归

 1         //把数组中的第0个数组作为标准数
 2         int stard=arr[start];
 3         //记录需要排序的下标
 4         int low=start;
 5         int high=end;
 6         //循环找比标准数大的数和比标准数小的数
 7         while(low<high){
 8             //右边的数字比标准数大
 9             while(low<high&&stard<=arr[high]){
10                 high--;
11             }
12             //右边的数字比标准数小,使用右边的数字替换左边的数
13             arr[low]=arr[high];
14             //如果左边的数字比标准数小
15             while(low<high&&arr[low]<=stard){
16                 low++;
17             }
18             //如果
19             arr[high]=arr[low];
20         }
21         //把标准数据给低所在的位置
22         arr[low]=stard;
23         //处理所有的小的数字
24         quickSort(arr,start,low);
25         //处理所有的大的数字
26         quickSort(arr,low+1,end);

猜你喜欢

转载自www.cnblogs.com/axu521/p/9975736.html