不同于采用线性表顺序存储结构的vector和deque容器,list双向链表中任一位置的元素差值、插入和删除,都具有高效的常数阶算法时间复杂度O(1)。
头文件
#include
创建list对象
1)list();//创建一个没有任何元素的list对象。
listl 2)list(size_type n);//创建一个具有n个元素的list对象,每个元素采用它的类型下的默认值。
li...
分类:
编程语言 时间:
2015-07-03 17:32:46
阅读次数:
172
转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/27570953 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。一.归并排序算法/*****************...
分类:
编程语言 时间:
2015-07-02 19:26:39
阅读次数:
117
定义:对于一个给定的数列,如果有iAj,则称(i,j)为一逆序对.
要解决的问题是,给出一个数列,求出这个数列包含多少个逆序对。
例如,数组(3,1,4,5,2)的“逆序对”有,,共4个。
解题思路使用归并排序可以用O(nlogn)的时间解决统计逆序对个数的问题 .
逆序对数实质就是插入排序过程中要移动元素的次数。
归并的时候...
分类:
其他好文 时间:
2015-07-01 22:14:02
阅读次数:
203
序快速排序(QuickSort)也是一种排序算法,对包含n个数组的输入数组,最坏情况运行时间为O(n^2)。虽然这个最坏情况运行时间比较差,但是快速排序通常是用于排序的最佳实用选择,这是因为其平均性能相当好,期望的运行时间为O(nlgn),且O(nlgn)中隐含的常数因子很小,另外它还能够进行就地排序在虚拟环境中也能很好的工作。原理快速排序也和合并排序一样,基于分治法,分为分解、解决、合并三个步骤;...
分类:
编程语言 时间:
2015-07-01 12:12:12
阅读次数:
126
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较...
分类:
编程语言 时间:
2015-07-01 09:55:58
阅读次数:
274
序本文主要介绍堆排序算法(HeapSort),堆排序像合并排序而不像插入排序,堆排序的运行时间为O(nlgn);像插入排序而不像合并排序,它是一种原地(in place)排序算法。在任何时候,数组中只有常数个元素存储在输入数组以外,这样,堆排序就把插入排序和合并排序的优点结合起来。
堆排序还引入了另外一种算法设计技术,利用某种数据结构(在此算法中为“堆”)来管理算法执行中的信息。堆数据结构不只在堆...
分类:
编程语言 时间:
2015-06-30 21:59:09
阅读次数:
150
排序算法复习大致结束了,主要有以下几种:冒泡排序、选择排序、简单插入排序、希尔排序、归并排序、快速排序、堆排序。
#include
#define MAXSIZE 1000
using namespace std;
class SqList{
public:
SqList():length(0){}
SqList(int length1,int value=0):length(le...
分类:
编程语言 时间:
2015-06-30 10:33:18
阅读次数:
104
1.时间复杂度
时间复杂度为O(n^2)的排序算法:插入排序、冒泡排序、选择排序
时间复杂度为O(nlogn)的排序算法:堆排序、归并排序、快速排序
希尔排序介于这两者之间
2.算法稳定性
稳定的排序算法:插入排序、冒泡排序、归并排序和基数排序
不稳定的排序算法:选择排序、快速排序、希尔排序、堆排序...
分类:
编程语言 时间:
2015-06-30 00:13:26
阅读次数:
149
1 class Solution { 2 public: 3 /** 4 * @param A: sorted integer array A which has m elements, 5 * but size of A is m+n 6 ...
分类:
编程语言 时间:
2015-06-29 23:48:23
阅读次数:
346
归并排序原理即将两个有序的数组合并成一个,归并排序有两种方法:递归和循环。
/*递归方法*/void Merge(int TR1[], int TR2[], int low, int mid, int high)
{//将TR2归并入TR1中
int pos1 = low;
int pos2 = mid + 1;
for (int i = low; i <= high; ++i)
...
分类:
编程语言 时间:
2015-06-29 20:35:46
阅读次数:
107