java快速排序

createh51周前 (03-05)技术教程13

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

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 实现快速排序、归并排序、选择排序和桶排序

import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util....

Java中List排序的3种方法

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

Java选择排序法

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

算法篇:Java实现九种排序算法1:插入排序之后直接插入排序

一、插入排序思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。关键问题:在前面已经排好序的序列中找到合适的插入位置。方法:直接插入排序、二分插入...

java实现10种排序算法

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