算法之排序算法 -- 快速排序 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的主要内容,如果未能解决你的问题,请参考以下文章