间间断断的将9种排序实现,并且将其以博客笔记的形式记录下来;现在就该来综合的分析这九种排序,让我们先来看看其算法复杂度和稳定性的分析结果:算法复杂度以及稳定性分析算法名称平均时间辅助空间稳定性冒泡排序O(n2)O(1)是选择排序O(n2)O(1)否插入排序O(n2)O(1)是自底向上归并排序O(nl...
分类:
编程语言 时间:
2015-03-04 10:59:59
阅读次数:
165
Sort a linked list in O(n log n)
time using constant space complexity.
链表排序,O(nlgn)的复杂度,应该是归并或者快排,对链表来说归并应该用起来更顺手一些,尤其是对归并的步骤来说,链表这种数据结构真是再合适不过了。这里我用了递归调用来实现归并步骤,效率可能略微低那么一点点,但是代码简洁得不得了哇~~
归并排序是分治...
分类:
其他好文 时间:
2015-03-03 22:18:35
阅读次数:
160
分治模式在每层递归时都有三个步骤: 1、分解原问题为若干子问题,这些子问题是原问题的规模较小的实例 2、解决这些子问题,递归的求解各子问题。 3、合并这些子问题的解成原问题的解。 归并排序算法完全遵照分治...
分类:
其他好文 时间:
2015-03-03 16:52:21
阅读次数:
137
题目要求:合并两个已有序序列为A[0…i],A[i+1…N-1] 为A[0...N-1], 要求使用常量辅助空间为叙述方便,表示A[0…i]为a[0..n-1],A[i+1…N-1]为b[0…m-1],问题实际上是使用常数辅助空间的归并排序只用一个辅助空间的归并排序,临时变量 int x;思路如下:...
分类:
编程语言 时间:
2015-03-03 15:06:48
阅读次数:
243
c语言实现插入排序、冒泡排序、选择排序、快速排序、堆排序、归并排序、希尔排序示例,需要的朋友可以参考下实现以下排序插入排序O(n^2)冒泡排序 O(n^2)选择排序 O(n^2)快速排序 O(n log n)堆排序 O(n log n)归并排序 O(n log n)希尔排序 O(n^1.25)1.插...
分类:
编程语言 时间:
2015-03-02 23:42:13
阅读次数:
283
名称稳定性时间复杂度空间复杂度描述数据对象为链表平均最坏冒泡排序YO(n^2)O(1)无序区,有序区。 选择排序 O(n^2)O(1)有序区,无序区稳定性Y,其它同数组插入排序YO(n^2)O(1)有序区,无序区同数组堆排序 O(n log n)O(1)最大堆,有序区 归并排序YO(n log n)...
分类:
编程语言 时间:
2015-03-02 18:18:21
阅读次数:
134
题目:
1、Sort a linked list using insertion sort
2、Merge
two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
3、Sor...
分类:
编程语言 时间:
2015-02-28 21:46:36
阅读次数:
288
1 #include 2 #include 3 #include 4 using namespace std; 5 6 void displayArray(int* const,const int&); 7 void displayVec(vector &); 8 9 void MERG...
分类:
编程语言 时间:
2015-02-28 16:14:48
阅读次数:
150
题目描述 Description
有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1]。问安排怎样的合并顺序,能够使得总合并代价达到最小。
输入描述 Input Description
第一行一个整数n(n
第二行n个整数w1,w2...wn (wi
输出描述 ...
分类:
其他好文 时间:
2015-02-28 14:38:33
阅读次数:
184
面向对象技术是软件工程领域中的重要技术,这种技术比较自然的模拟了人类认识客观世界的方式,是当前计算机软件工程学中的主流方法。面向对象方法认为:客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成;具有相同数据和相同操作的对象可以归并为一个类,对象是对象类的一个实例;....
分类:
其他好文 时间:
2015-02-25 22:20:46
阅读次数:
179