/**
* 快速排序3.0
* 1.0和2.0版本的时间复杂度都是O(N^2)
* 3.0版本时间复杂度是O(NlogN)
*/
public class QuickSort3 {
public static void main(String[] args) {
int[] array = {3,1,2,4,5,3,5};
QuickSort(array, 0, array.length - 1);
for (int i : array) {
System.out.println(i);
}
}
public static void QuickSort(int[] array, int left, int right){
if (left < right){
//随机将数组中一个数放在数组的最右侧
swap(array, left + (int) (Math.random() * (right - left + 1)), right);
int[] partition = partition(array, left, right);
QuickSort(array, left, partition[0] - 1);
QuickSort(array, partition[1] + 1, right);
}
}
public static int[] partition(int[] array,int left, int right){
int less = left - 1;
int more = right;
while (left < more){
if (array[left] < array[right]){
swap(array, ++less, left++);
}else if (array[left] > array[right]){
swap(array, --more, left);
}else {
left++;
}
}
swap(array, more, right);
return new int[]{less + 1, more};
}
public static void swap(int[] array, int a, int b){
if (a == b){
return;
}
array[a] = array[a] ^ array[b];
array[b] = array[a] ^ array[b];
array[a] = array[a] ^ array[b];
}
}
快速排序3.0
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
排序算法之计数排序的优化
排序算法之计数排序的优化
数组 计数排序 最小值 -
快速排序
比较快的一种排序方法
PHP 职场 休闲 排序 -
快速排序python代码 python 快速排序
简介 快速排序(Quick Sort)是对冒泡排序的一种改进,其基本思想:选一基准元素,依次将剩余元素中小于该基准元素的值放置其左侧,大于等于该基准元素的值放置其右侧;然后,取基准元素的前半部分和后半部分分别进行同样的处理;以此类推,直至各子序列剩余一个元素时,即排序完成(类比二叉树的思想)。 算法实现步骤首先设定一个分界值(pivot),通过该分界值将数组分成左右两部分。
快速排序python代码 python 快速排序 python快速排序 冒泡和快速排序的时间复杂度 实现快速排序的算法