算法之排序算法 -- 快速排序 Quick sort

Posted 程序小园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法之排序算法 -- 快速排序 Quick sort相关的知识,希望对你有一定的参考价值。

快速排序中心思想 -- 分而治之 Divide and Conquer

分:

    将要排序的素数分为两部分, 左边为大于第一个元数的部分, 右边为小于第一个元素的部分。

治:

    将分开数组的每一部分,重新“分”而治之,知道不可分割。

    不可分割的小单元,其实已经排好序。

    每个不可分割的小单元连在一起就成为一个拍好序的数组。


应用场景:

    找出数组中的K大的数,可以用快速排序的进行查找。


public class QuickSort{
public static void main(String []args){ int[] nums = {3,6,7,9,2,0, 6,1,8,5,4}; sort(nums, 0, nums.length-1); for (int num: nums) { System.out.print(num); System.out.print(" "); } } public static int partition(int[] arr, int start, int end) { if (start >= end) return start; int index = start; for (int i = start + 1; i <= end; i ++ ) { if (arr[i] <= arr[start]) { if (index < end) { index++; swap(arr, index, i); } } } swap(arr, index, start ); return index; } public static void swap(int[] arr, int first, int second) { int temp = arr[first]; arr[first] = arr[second]; arr[second] = temp; } public static void sort(int[] arr, int start, int end) { if (end <= start) return; int index = partition(arr, start, end); sort(arr, start, index-1); sort(arr, index+1, end); } }


以上是关于算法之排序算法 -- 快速排序 Quick sort的主要内容,如果未能解决你的问题,请参考以下文章

面试常用算法之排序

算法分析 - 快速排序QUICK-SORT

快速排序算法回顾 --冒泡排序Bubble Sort和快速排序Quick Sort(Python实现)

排序算法-快速排序(Quick Sort)

算法-快速排序(quick sort)

python 学习笔记 -- 数据结构与算法 快速排序 Quick Sort