java快速排序

createh52个月前 (03-05)技术教程22

快速排序是一种非常高效的排序算法,它的实现,增大了记录和比较和移动的距离,从而减少总的比较此时和移动次数。采用分而治之的思想,将一个大的问题拆成一个小的问题,小的问题拆成更小的问题。

public static void quickSort(int []array,int low,int high) {

if(low>=high){

return;

}

int left=low;

int right=high;

int base = array[low];

while (left!=right) {//从后面开始检索 遇到比基准数小的就停下,遇到比基准数大于等于的就继续检索

while (array[right]>=base&&left<right) {//left小于right 防止越界 比如数组内所有元素都比base小就会一路走下去

right--;

}

while (array[left] <= base&&left<right) {

left++;

}


int temp=array[left];

array[left]=array[right];

array[right]=temp;

}

//交换基准值和相遇位置的值

array[low]=array[left];//相遇的值一定小于基准值

array[left]=base;

quickSort(array,low,left-1);

quickSort(array,left+1,high);

}

快速排序

时间复杂度最好情况是都能分割成较完美的两部分 O(nlog(n)),最坏情况是数组是有序的每次分割只有一边 O(n^2)

空间复杂度为O(nlog(n)) 稳定性:不稳定

快速排序再最坏的情况下可以优化,即优化基准值

三数取中法即low mid high 取中间大小的数字为基准值

相关文章

Java中List排序的3种方法

在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的,而我们的系统需要按照用户的年龄从大到小进...

Java选择排序法

假设当前存在一个 int 类型的数组 number,该数组中的元素依次是 13、15、 24、99、4 和 1。如果使用冒泡排序进行两两相邻比较,第 一趟排序后的结果如下:  13、15、24、4、1...

java实现10种排序算法

1.冒泡排序(Bubble Sort)import java.util.Arrays;//冒泡排序public class BubbleSort_01 {public static void main...

6.Java中ArrayList进行排序总结

文章目录前言1.基础类型的集合排序:2.实体类的集合排序传统:3.Java8使用流式的排序:结尾前言ArrayList是最常见最频繁我们java编程当中使用的集合类,往往进行集合操作的时候会进行排序操...

深圳尚学堂Java培训:排序方法小结-冒泡排序

作为一个初学者,排序算法可能是接触到的最早的逻辑实例了,而且这些个逻辑还确实有点伤脑筋,那我就将一些经典的排序算法记下来吧,以后也可以来瞧瞧。一、冒泡排序最直接、最好理解、初学者最容易想到的排序算法!...