排序
排序算法
AcTarjan
冲冲冲!!!
展开
-
插入排序实现
直接插入排序、二分插入排序、希尔排序原创 2022-09-29 14:20:57 · 286 阅读 · 0 评论 -
排序——归并排序
归并排序原创 2022-06-08 15:33:17 · 85 阅读 · 0 评论 -
排序——选择排序
简单选择排序,堆排序原创 2022-06-06 16:15:27 · 87 阅读 · 0 评论 -
排序——交换排序
冒泡排序,快速排序原创 2022-06-06 10:40:30 · 123 阅读 · 0 评论 -
表排序
表排序 是一种间接排序,当移动待排序的元素需要花费大量的时间时,建立一个表来对应待排序的元素,有点像map,表为key,元素为value,通过value的大小,对key进行排序 数组A 0 1 2 3 4 5 6 7 value f d c a g b h e table 3 5 2 1 7 0 4 6 假如只需要输出排序后结果,只需要输出A[tab原创 2020-06-26 15:27:30 · 193 阅读 · 0 评论 -
快速排序
快速排序 算法步骤 1、选一个基准pivot,基准可以是left、right、center的中位数 2、将序列进行排序,使得左边的序列都不超过基准,右边的序列都不小于基准 如果序列长度不超过3,选择基准时就可直接进行排序并返回; 否则,将基准pivot与right-1进行交换,low指向left+1,high指向right-2,每次low遇到一个不小于基准的元素停下,high遇到一个不大于基准的元素停下,若low<high,则交换low与high;否则结束循环,将low与right-1交换位原创 2020-06-26 10:50:44 · 151 阅读 · 0 评论 -
归并排序
归并排序 核心思想:两个有序子序列的合并 将小的有序序列逐步合并成大的有序序列,直到完成排序 时间复杂度:O(N*logN) 递归算法 class Sort{ int N; int a[] = new int[100005]; int tmp[] = new int[100005]; public void mergeSort(int left,int right){ if(left<right){ int cente原创 2020-06-25 10:49:14 · 170 阅读 · 0 评论 -
堆排序
利用堆的性质,若从小到大排序,则建立最大堆,每次删除堆顶的元素(与堆中最后一个元素进行交换,修改堆的大小并向下调整) class Sort{ int N; int a[] = new int[100005]; void heapSort(){ for (int i = N/2; i>=1; i--)//build a max heap siftDown(i,N); for (int i = N; i >=1; i原创 2020-06-24 16:33:53 · 134 阅读 · 0 评论 -
希尔排序
希尔排序 给定一个如下的增量序列,作为排序间隔,对每个Dk做“Dk-间隔”的排序,间隔排序采用插入排序 性质:“Dk-间隔”有序的序列,在执行“Dk-1-间隔”排序后,仍然是“Dk-间隔”有序的 Hibbard 增量序列 Dk = 2^k–1(相邻元素互质 ) 最坏情况: T = O( N^3/2 ) 猜想: Tavg = O ( N^5/4 ) Sedgewick增量序列 {1, 5, 19, 41, 109, … } ,通式:9 *4^ i – 9*2^ i + 1 或4^i...原创 2020-06-24 09:42:45 · 140 阅读 · 0 评论 -
冒泡排序与插入排序
冒泡排序 基本思想:进行N-1次循环,每次循环将一个最大值移动到最后 最好:顺序,O(N) 最坏:逆序,O(N^2) 插入排序 基本思想:当前下标为i,前面的元素已经有序,将a[i]插入到前面的序列,从后向前与待插入元素进行比较,找出待插入的位置 最好:顺序,O(N) 最坏:逆序,O(N^2) 逆序对:对于下标i<j,如果a[i]>a[j],则称(i,j)是一个逆序对 算法分析 冒泡排序和插入排序的交换次数都等于序列的逆序对数,因为每进行一次交换将消去一个逆序对 定理:任意原创 2020-06-24 09:00:59 · 181 阅读 · 0 评论 -
基数排序(Radix sort)
第一次接触基数排序是在学习后缀数组(有感兴趣的可以看一下-->后缀数组)的时候,感觉和桶排序很像,时间复杂度能达到,是一种很高效的排序方法,下面就来看看基数排序是怎么进行排序的吧! 注:本文主要讲述从小到大排序,从大到小排序与之类似,如果你真的理解了基数排序,不难实现从大到小排序 排序方法: 给定一个需要进行排序的数组a和十个桶(编号从0到9),对于数组a中每个元素,先根据其个位数字...原创 2018-09-23 14:07:07 · 512 阅读 · 1 评论