搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 程序小园 > 算法之排序算法 -- 快速排序 Quick sort

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

程序小园 2019-11-08

快速排序中心思想 -- 分而治之 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》的版权归原作者「程序小园」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注程序小园微信公众号

程序小园微信公众号:Jiayan-Guo

程序小园

手机扫描上方二维码即可关注程序小园微信公众号

程序小园最新文章

精品公众号随机推荐