用Java快速排序
如果您想练习数据结构和算法程序,可以通过 数据结构和算法面试题.
In quick 分类, we first choose a
枢
and divide 整型o two sublists,one will contain elements lower than 枢
and other will have elements greater than 枢
.
快速排序算法
可以说数组是arr []
- Choose a
枢
, it is generally mid element of the list. - Initialise two index variable ,
剩下=0
and对=arr.length-1
- 递增左变量,直到元素高于枢轴。
- 递减右变量,直到获得小于枢轴的元素
- swap
rr[left]
andrr[right]
Recursively 分类 sublists
(小于枢纽的子列表,大于枢轴的子列表)使用上述算法。- In the end , you will get
分类ed 数组
.
快速排序实施
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
包 组织.Arpit.爪哇2blog; 进口 爪哇.实用程序.数组; 上市 类 QuickSortMain { 私人的 静态的 整型 数组[]; 上市 静态的 虚空 分类(整型[] rr) { 如果 (rr == 空值 || rr.长度 == 0) { 返回; } 数组 = rr; quickSort(0, 数组.长度-1); } 私人的 静态的 虚空 quickSort(整型 剩下, 整型 对) { 整型 i = 剩下; 整型 j = 对; //找到枢纽号,我们将其作为中间 整型 枢 = 数组[剩下+(对-剩下)/2]; 而 (i <= j) { / ** *在每次迭代中,我们将向左递增,直到找到大于枢轴的元素 *我们将一直递减直到找到小于枢轴的元素 */ 而 (数组[i] < 枢) { i++; } 而 (数组[j] > 枢) { j-; } 如果 (i <= j) { 交换(i, j); //将索引移到两侧的下一个位置 i++; j-; } } //递归调用quickSort()方法 如果 (剩下 < j) quickSort(剩下, j); 如果 (i < 对) quickSort(i, 对); } 私人的 静态的 虚空 交换(整型 i, 整型 j) { 整型 温度 = 数组[i]; 数组[i] = 数组[j]; 数组[j] = 温度; } 上市 静态的 虚空 主要(串 a[]){ 整型[] 输入 = {33,21,45,64,55,34,11,8,3,5,1}; 系统.出.打印(“排序之前:”); 系统.出.打印(数组.toString(输入)); 分类(输入); 系统.出.打印(“ == ================”); 系统.出.打印(“排序后:”); 系统.出.打印(数组.toString(数组)); } } |
输出:
[33、21、45、64、55、34、11、8、3、5、1]
== == ==============
排序后:
[1、3、5、8、11、21、33、34、45、55、64]
时间复杂度
最佳情况: O(n log n)
平均情况: O(n log n)
最糟糕的情况 : O(n^2)
要了解有关复杂性的更多信息,请仔细阅读 算法的复杂性.