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     }

 

转载于:https://www.cnblogs.com/zmanzi/p/10759622.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值