manzi

导航

java实现快速排序

一、基本思路

      快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。(翻译为白话就是:把一个数组以其中任意一个数为基数比较大小分为两部分--“大于区”、“小于区”,完了递归操作,核心思想就是二分思想、递归算法)

二、图片解析

 

 

 截图来自于视频截图:https://www.iqiyi.com/w_19rtz1oc1t.html

 三、代码实现

 1 /**
 2      * 
 3      * @Title : quikSort @Description: 快速排序测试代码 @param arr : void @author :manzi
 4      *        Create Date : 2019年4月23日 下午8:08:24 @throws
 5      */
 6     public static void quikSort(int[] arr, int left, int right) {
 7         if (left > right) {
 8             return;
 9         }
10         //基数设置为数组第一个数
11         int x = arr[left];
12         int i = left;
13         int j = right;
14         while (i < j) {//比较大小
15             while (i < j && arr[j] >= x) {
16                 j--;
17             }
18             if (i < j) {
19                 arr[i] = arr[j];
20                 i++;
21             }
22             while (i < j && arr[i] <= x) {
23                 i++;
24             }
25             if (i < j) {
26                 arr[j] = arr[i];
27             }
28             arr[i] = x;
29             //递归小于基数部分
30             quikSort(arr, left, i - 1);
31             //递归大于基数部分
32             quikSort(arr, i + 1, right);
33 
34         }
35 
36     }

 

posted on 2019-04-23 22:53  manzi  阅读(109)  评论(0编辑  收藏  举报