![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
#排序算法
大白熊_BlankBear
这个作者很懒,什么都没留下…
展开
-
快速排序
6.快速排序算法思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。算法描述1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]的值赋给A[i];4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于ke原创 2020-06-15 23:49:36 · 157 阅读 · 0 评论 -
冒泡排序
5.冒泡排序说明冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。图示说明冒泡排序过程算法实现:/** * 冒泡排序 * 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一原创 2020-06-15 23:48:40 · 173 阅读 · 0 评论 -
堆排序
4.堆排序算法思想将R[1..N]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择最小的元素。(堆的定义下:具有n个元素的序列 (h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1) (i=1,2,...,n/2)时称之为堆。)算法描述初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个 堆,这时堆的根节点的数最大。然后将根节点与堆原创 2020-06-15 23:48:05 · 92 阅读 · 0 评论 -
简单选择排序
3.简单选择排序算法思想每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。步骤(1)从待排序序列中,找到关键字最小的元素;(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;(3)从余下的N - 1个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。图示说明实现 private static int[] selectSort(int [] array, int low, int hig..原创 2020-06-15 23:14:36 · 245 阅读 · 0 评论 -
希尔排序
2.希尔排序算法原理先将整个序列分割成若干小的子序列,再分别对子序列进行直接插入排序,使得原来序列成为基本有序。这样通过对较小的序列进行插入排序,然后对基本有序的数列进行插入排序,能够提高插入排序算法的效率。图示说明实现步骤1. 先取一个小于n的整数d1作为第一个增量,将所有距离为d1的倍数的记录放在同一个组中,把无序数组分割为若干个子序列。2. 在各子序列内进行直接插入排序。3. 然后取第二个增量d2<d1,重复步骤1~2,直...原创 2020-06-15 23:13:59 · 1305 阅读 · 0 评论 -
直接插入排序
1.直接插入排序基本思想在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。图像示例算法实现一种是从后往前插入,也是java.util.Array的实现方式 private static int[] insertSort(int[] array, int low, int high) { //从后往前插入,Array里面实现 for(int原创 2020-06-15 23:13:23 · 144 阅读 · 0 评论