不稳定的排序算法
waS_TransvolnoS
写过两行bug,尘世间一个迷途小码农。
展开
-
从零单刷数据结构(Java描述)(十三)——排序(交换排序)之快速排序
快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。//快速排序 //设置两个指针lo、hi指向最前、最后,分别向游标index=arr[i]靠近 public static void quickSort(int[]arr,int l...原创 2019-06-07 17:15:36 · 100 阅读 · 0 评论 -
从零单刷数据结构(Java描述)(十五)——排序(插入排序)之希尔排序
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。算法复杂度O(n^2),是不稳定的排序算法。直接插入排序,如果在基本有序的数组后来了一个较小的元素,则需要重复移动多次,希尔排序通过第一次length/2的移动改善了此问题。在这里插入代码片...原创 2019-06-08 17:07:56 · 95 阅读 · 0 评论 -
从零单刷数据结构(Java描述)(二十六)——排序之堆排序
堆排序(Heap Sort)是利用堆(本文使用大顶堆)进行排序的方法。它的基本思想是, 将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根结点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值) ,然后将剩余的 n-1 个序列重新构造成一个堆,这样就得到 n 个元素中的次小值。如此反复执行, 便能得到一个有序序列了。堆是具有下列性质的完全二叉树:每个结点...原创 2019-06-15 11:33:31 · 100 阅读 · 0 评论