失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【图解算法】排序算法——快速排序

【图解算法】排序算法——快速排序

时间:2020-03-16 12:29:37

相关推荐

【图解算法】排序算法——快速排序

简介

首先还是得简单的介绍一下快速排序这个算法。

快速排序(Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

快速排序也是被称作21世纪最伟大算法之一。

NO PIC SAY WHAT?

每个(未排序)的拆分的遍历将第一个元素设为轴心点存储指数 = 轴心点指数 +1从 i=轴心点指数 +1 到 最右指数 的遍历如果 元素[i] < 元素[轴心点]交换(i, 存储指数); 存储指数++交换(轴心点, 存储指数 - 1)

实现的思路是选择一个元素,将比他小的放在他的左边,比他大的放右边,递归完所有未完成排序的数组即可完成最后的目标。

java 实现

public static void main(String[] args) {int[] test = {6, 9, 28 ,13 ,31 ,26 ,1 ,16 ,7, 22, 49 ,46,45,46};quicksort(test,0);for (int i = 0; i < test.length; i++) {System.out.print(test[i] + "\t");}}/*** 每个(未排序)的拆分的遍历* 将第一个元素设为轴心点* 存储指数 = 轴心点指数 +1* 从 i=轴心点指数 +1 到 最右指数 的遍历*如果 元素[i] < 元素[轴心点]* 交换(i, 存储指数); 存储指数++* 交换(轴心点, 存储指数 - 1)* @param arr*/private static void quicksort(int[] arr,int l) {if(l >= arr.length) return;//递归出口int j = l + 1;//l 作为轴心点 j 作为存储指数for (int i = l; i < arr.length; i++) {if(j >= arr.length) break;//越界情况if(arr[i] < arr[j]){swap(arr, i, j);}j++;}if(j <= arr.length) swap(arr, l, j-1);quicksort(arr, ++l);}/*** 交换数组中的两个元素* @param arr* @param a* @param b*/private static void swap(int[] arr,int a,int b){int temp = arr[a];arr[a] = arr[b];arr[b] = temp;}

输出

1 6 7 9 13 16 22 26 28 31 45 46 46 49

图解算法目录

【图解算法】排序算法——冒泡排序、选择排序

【图解算法】排序算法——插入排序

【图解算法】排序算法——归并排序

【图解算法】排序算法——快速排序

【图解算法】Java GC算法

【图解算法】排序算法——堆排序

【图解算法】并查集 —— 联合查找算法

【图解算法】排序算法——计数排序

Gif Power By

如果觉得《【图解算法】排序算法——快速排序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。