挑战程序设计竞赛
「已注销」
这个作者很懒,什么都没留下…
展开
-
挑战程序设计竞赛选读-归并排序
高等排序归并排序之前介绍的排序算法,如插入排序、选择排序具有高达O(N2)O(N^2)O(N2)级的复杂度,使它们在面对大规模输入时无能为力。归并排序利用分治思想,可将排序复杂度降低到O(nlogn)O(nlogn)O(nlogn)量级,大大加快了排序速度。基本原理:将一未排序序列归分为两个子序列,对子序列排序后,将他们按顺序合并,并对子序列递归进行上述过程。如何正确的合并两个已排序序列是归并排序的核心。复杂度:划分到最后一层时,可得NNN个单独元素,因此最多可划分至log2Nlog_2Nlog2原创 2020-10-11 22:20:26 · 223 阅读 · 0 评论 -
挑战程序设计竞赛选读-选择排序
初等排序选择排序选择排序的基本思想是,在未排序序列中找到最小的那个元素,然后将它与未排序序列的首元素交换,如此以来,整个序列便逐渐归于有序。正确性:其正确性显而易见。复杂度:在排序过程中,主要耗时在寻找待排序列的最小元素上,且若待排序列元素个数为NNN ,则每次需进行N−1,N−2,…,1N-1,N-2,\dots,1N−1,N−2,…,1次比较,总的时间复杂度为N−1+N−2+⋯+1=N(N−1)2=O(N2)N-1+N-2+\dots+1=\frac{N(N-1)}{2}=O(N^2)N−原创 2020-10-10 23:25:38 · 1640 阅读 · 0 评论 -
挑战程序设计竞赛选读-插入排序
挑战程序设计竞赛选读一、初等排序1.插入排序插入排序是指将未排序序列分为已排序列和待排序列,通过将第一个待排序列的元素插入到已排序列的方式使整个序列逐渐全部有序。正确性分析:每次插入,都会使已排序列增长,待排序列减少,符合减而治之(decrease-and-conquer)的分析问题的原则。复杂度分析:在最坏的情况下(整个倒序),每次插入都会使其后的元素全部移动,当序列长为N时,需移动1+2+3+⋯+N=N(N−1)2=O(N2)1+2+3+\dots+N = \frac{N(N-1)}{2}原创 2020-10-09 23:33:04 · 138 阅读 · 0 评论