美文网首页
java--快速排序

java--快速排序

作者: android_coder | 来源:发表于2021-04-27 23:36 被阅读0次

1:基本思想:

快速排序是属于交换类排序,采用不断的比较和移动来实现排序。快速排序是一种非常高效的排序算法,它的实现,增大了记录和比较和移动的距离,从而减少总的比较此时和移动次数。采用分而治之的思想,将一个大的问题拆成一个小的问题,小的问题拆成更小的问题。
快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

步骤为:

1:从数列中挑出一个元素,称为"基准"(pivot)
2:重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3:递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去

快速排序的分析

11.png

代码实现

 private static int[] quickSortIntArray(int[] array, int start, int end) {
        if (start > end) {
            return array;
        }
        int middle = array[start];
        int left = start;
        int right = end;
        while (left < right) {
           //如果右边的值比左边大指针继续往左移动
            while (left < right && array[right] > middle) {
                right --;
            }
            array[left] = array[right];//右边的值移到左边的位置
           //如果左边的值比右边小指针继续往右移动
            while (left < right && array[left] <= middle) {
                left++;
            }
            array[right] = array[left];
        }
        array[left] = middle;
        quickSort(array, start, left - 1);
        quickSort(array, left +1, end);
        return array;
    }

相关文章

  • Java--快速排序

    本文章参考博客:白话经典算法系列之六 快速排序 快速搞定 1.思路 1.数组中选一个基数key,通常是取数组第一个...

  • java--快速排序

    1:基本思想: 快速排序是属于交换类排序,采用不断的比较和移动来实现排序。快速排序是一种非常高效的排序算法,它的实...

  • Java--冒泡排序

    冒泡两次for循环,第一层是不断缩小数组长度,第二层做比较并且交换位置。

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 面试准备--排序

    堆排序 快速排序(simple) 快速排序(regular) 归并排序 Shell排序 插入排序 选择排序 冒泡排序

  • 排序

    插入排序 选择排序 冒泡排序 归并排序 快速排序* 三路快速排序

  • 算法笔记01-排序#2

    快速排序敢叫快速排序,那它一定得快。 快速排序 概述 快速排序也是分治排序的典型,它快,而且是原地排序。不过,要防...

  • PHP 实现快速排序

    导语 这篇了解下快速排序。 快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-...

  • 快速排序的Python实现

    目录 快速排序的介绍 快速排序的Python实现 快速排序的介绍 快速排序(quick sort)的采用了分治的策...

  • 数据结构与算法 快速排序

    起因:快速排序,又称分区交换排序,简称快排,之前没有了解过,抽空学习一下。 快速排序 1 快速排序 快速排序的定义...

网友评论

      本文标题:java--快速排序

      本文链接:https://www.haomeiwen.com/subject/gedmrltx.html