java快速排序

createh53个月前 (03-05)技术教程35

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

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实现九种排序算法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算法总结之冒泡排序(详解)

程序代码园发文地址:Java算法总结之冒泡排序(详解)-程序代码园冒泡排序(默认升序)算法原理:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2、对每一对相邻元素做同样的工作,从开始第一...

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

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