
算法与数据结构
RookieFCB
这个作者很懒,什么都没留下…
展开
-
排序基础(三)
冒泡排序(Bubble Sort)算法思想:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1] > A[i]),则交换它们,直至序列比较完。原创 2017-08-03 01:40:13 · 251 阅读 · 0 评论 -
基础排序(四)
希尔排序(Shell Sort)算法思想:先将待排序表分割成若干个形如L[i, i+d, i+2d, … , i+kd]的“特殊”子表,分别进行插入排序,当整个表中元素已呈“基本有序”时,再对全体记录进行一次插入排序。原创 2017-08-04 02:23:49 · 299 阅读 · 0 评论 -
高级排序算法(一)
O(nlogn)的排序算法我们先来看看nlogn比n^2^快多少?原创 2017-08-08 00:57:44 · 423 阅读 · 0 评论 -
高级排序算法(二)
快速排序(Quick Sort)算法思想:在待排序表L[1…n]中任取一个元素pivot作为基准,通过一趟排序将带排序表划分为独立的两部分L[1…k-1]和L[k+1…n],使得L[1…k-1]中所有元素小于pivot,L[k+1…n]中所有元素大于或等于pivot,则pivot放在了其最终位置L(k)上,这个过程称为一趟快速排序。而后分别递归地对两个子表重复上述过程,直至每部分内只有一个元素或空为原创 2017-08-12 16:06:11 · 337 阅读 · 0 评论 -
排序基础(一)
O(n^2)的排序算法原创 2017-07-27 21:15:35 · 312 阅读 · 0 评论 -
归并排序和快速排序的衍生问题(一)
逆序对问题首先我们介绍一下什么是逆序对?以下内容摘自百度百科: 设 A 为一个有 n 个数字的有序集 (n>1),其中所有数字各不相同。如果存在正整数 i, j 使得 1 ≤ i < j ≤ n 而且 A[i] > A[j],则 template<typename T>long long __merge(T arr[], int l, int mid, int r) { T aux[原创 2017-08-19 15:54:21 · 272 阅读 · 0 评论 -
排序基础(二)
排序算法插入排序(Insertion Sort)原创 2017-07-27 21:16:12 · 289 阅读 · 0 评论 -
归并排序和快速排序的衍生问题(二)
取数组中第n大的元素取数组中第n大的元素这个问题,相信大家在学习数据结构这门课中都遇到过。通常我们会使用某一排序算法先将数组排序,然后在来找数组中第n大的元素。此时,数组中第n大的元素其在数组中的位置也为第n个。 利用这一思想,我们可以使用快速排序算法来将该求解算法的时间复杂度变为O(n)。为什么呢?在快速排序算法中,每一趟快速排序都会确定一个元素(基准)的位置,例如:假设现在基准为5,经过原创 2017-08-24 20:55:12 · 387 阅读 · 0 评论