数据结构(DataStructure)与算法(Algorithm)、STL应用

catalogue

. 引论
. 数据结构的概念
. 逻辑结构实例
2.1 堆栈
2.2 队列
2.3 树形结构
  2.3. 二叉树
. 物理结构实例
3.1 链表
  3.1. 单向线性链表
  3.1. 单向循环链表
  3.1. 双向线性链表
  3.1. 双向循环链表
  3.1. 数组链表
  3.1. 链表数组
  3.1. 二维链表
3.2 顺序存储
. 算法  
4.1 查找算法
4.2 排序算法

0. 引论

aaarticlea/png;base64,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*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2VlRUJDMQzPAzMXjwYGdn58WLF7u6uuro6AgICAgKCkK7BktkZWV1dXX19fWNjY1NTEzMzMx8fHySk5NxF/f30tDQkJycfOTIEX9/f1NTU9JcUlJSUlVV1dPTc/Xq1deuXXv58mUvrBsuKytLT0+/fPmyp6enq6uriooKuAUDo0ePtrCwiI+P7xGXAUznglWk3wGej9nZ2T4+Pmso7N279969e+7u7m7/xc7ObtasWTo6OoKCggMGDFiyZMmiRYsMDAzWrFkTEhLy5L/k5eUxzJ/AdBYlJSVJSUk2NjbU5DNCCMq9hg8fPnbs2LCwsLCwsJs3b9JotG44QX/69KniK9evXz98+HBYWNiUKVOMjIxITzMSExMTLy8vb2/v9evX9/JGH8x3gVUE01FoNBq5n+gn2e/eCY1Gy83NPXv2rIODA0xHHzdu3MSJEw0MDMhT9uDBg6WlpefMmTN//vzAwMDr16/fuHHjxo0b169fd3V1DQ8Ph4sPHjyoqKhoZ8WHDx/evHlzg8L169evX78eERGxfv36JUuWODo6KikpiYuLs9yYTpw40d7ePjY2NjExMScnB9tb8TBYRTCYPkxzczPVAObYsWPbt28PCAiYMGGCuro6aTPMAT4+Pjk5OTU1taH/RV5eHnY530RZWVlDQ8PFxeXkyZP79+/PyMjgjeYeTAfBKoLB8CxNTU05OTlpaWl+fn4LFy5cuHDhsmXL/P39f/75Z7jo4uLi4OBgZ2cnKSnJ918EBQUVFBQWUvDz8wsICNixY0dISMitr+CMFwarCAaDIT5+/FjJBB6bhukIWEUwGAwGwz28oyKNjY045YvBYDDdDO+oyKtXr/BwJwwGg+lmeEdFMBgMBtP9YBXBYDAYDPdgFcFgMBgM92AVwWAwGAz3YBXBYDAYDPdgFcFgMBgM92AVwWAwGAz3YBXBYDAYDPdgFcFgMLxPe3s77kruIrCKYDAYHqetre3MmTOfP3/u6QPhTbCKYDAYHqe9vZ1Go/X0UfAsWEUwGAwGwz19SUX+/PNPOp3e00eBwWAwmP+jL6lIcXExzo9hMBhMr6IvqQgGg8FgehtYRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9WEUwGAwGwz1YRTAYDAbDPVhFMBgMBsM9/w+pCt1owGCfSAAAAABJRU5ErkJggg==" alt="" />

0x1: 为什么要学习数据结构

N.沃思(Niklaus  Wirth)教授提出

程序 = 算法 + 数据结构
以上公式说明了如下两个问题
. 数据上的算法决定如何构造和组织数据(算法 -> 数据结构)
. 算法的选择依赖于作为基础的数据结构(数据结构 -> 算法)

软件工程的观点

软件 = 程序 + 文档

0x2: 数值计算解决问题的一般步骤

数学模型 -> 选择计算机语言 -> 编出程序 -> 测试 -> 最终解答 

数值计算的关键是

如何得出数学模型(方程)

程序设计人员比较关注程序设计的技巧

0x3: 求解非数值计算的问题

主要考虑的是设计出合适的数据结构及相应的算法,即

 首先要考虑对相关的各种信息如何表示、组织和存储

因此,可以认为,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科

0x4: STL

STL(Standard Template Library,标准模板库)是算法和其他一些组件的集合,STL的目的是标准化组件。STL现在是C++的一部分,我们可以很方便地使用STL直接获得数据结构的特性以及操作集

Relevant Link:

http://www.cnblogs.com/LittleHann/p/4011614.html

1. 数据结构的概念

0x1:  相关术语

. 数据: 是计算机化的信息载体
. 数据元素: 是数据的基本单位,是数据集合中的个体(例如:结点、顶点、记录等)
. 数据项: 是具有独立含义的数据最小单位,例如: 在田径比赛表中,一个选手的有关信息就是数据元素(记录),而选手参赛的项目就是数据项(字段)

0x2: 定义

. 定义1: 数据元素之间的相互关系称为结构,带有结构的数据元素的集合称为数据结构
. 定义2: 按某种逻辑关系组织起来的一批数据(或称带结构的数据元素的集合)应用计算机语言并按一定的存储表示方式把它们存储在计算机的存储器中,并在其上定义了一个运算的集合

0x3: 数据结构的三个层次

. 逻辑结构: 数据元素间抽象化的相互关系(简称为数据结构),它与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型
) 集合结构: 集合结构的集合中任何两个数据元素之间都没有逻辑关系,组织形式松散
) 线性结构: 数据结构中线性结构指的是数据元素之间存在着"一对一"的前后关系
2.1) 结构中必须存在唯一的首元素
2.2) 结构中必须存在唯一的尾元素
2.3) 除首元素外,结构中的每个元素有且仅有一个前趋元素
2.4) 除尾元素外,结构中的每个元素有且仅有一个后继元素
) 树状结构: 树状结构是一个或多个节点的有限集合,树型结构中的元素具有一对多的父子关系
3.1) 结构中必须存在唯一的根元素
3.2) 除根元素外,结构中的每个元素有且仅有一个前趋元素
3.3) 除叶元素外,结构中的每个元素拥有一到多个后继元素
) 网络结构: 网状结构中的元素具有多对多的交叉映射关系
4.1) 结构中的每个元素都可以拥有任意数量的前趋和后继元素
4.2) 结构中的任意两个元素之间均可建立关联 . 存储结构(物理结构): 存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言
) 顺序存储: 把逻辑上相邻的元素存储在物理位置上也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来体现
1.1) 其优点是可以实现随机存取,每个元素占用最少的存储空间
1.2) 缺点是只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片(零散存储区域碎片)
) 链接存储: 不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针表示元素之间的逻辑关系
2.1) 其优点是不会出现碎片现象,充分利用所有存储单元
2.2) 缺点是每个元素因存储指针而占用额外的存储空间,并且只能实现顺序存取
) 索引存储: 在存储元素信息的同时,还建立附加的索引表。索引表中的每一项称为索引项,索引项的一般形式是: (关键字,地址)
3.1) 其优点是检索速度快
3.2) 缺点是增加了附加的索引表,会占用较多的存储空间
3.3) 另外,在增加和删除数据时要修改索引表,因而会花费较多的时间
) 散列存储: 根据元素的关键字直接计算出该元素的存储地址,又称为Hash存储
4.1) 其优点是检索、增加和删除结点的操作都很快
4.2) 缺点是如果散列函数不好可能出现元素存储单元的冲突,而解决冲突会增加时间和空间开销 . 运算(算法): 施加在数据上的运算包括运算的定义和实现
) 运算的定义是针对逻辑结构的,指出运算的功能
) 运算的实现是针对存储结构的,指出运算的具体操作步骤

1. 逻辑结构

数据结构(DataStructure)与算法(Algorithm)、STL应用

逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的
逻辑结构是我们在学习数据结构时最重要的一个部分,本质上它是一种面向接口编程的范式思想,即不管底层物理存储采用何种方式和算法,逻辑结构规定了该结构"必须"要遵守的规范(例如pop、push),这表现为该数据结构的变化行为,而底层的物理存储方式解决了如何实现这些"接口范式"的需求

2. 存储结构(物理结构)

数据的存储结构是指数据的逻辑结构在计算机中的表示,顺序存储和链接存储是数据的两种最基本的存储结构

. 在顺序存储中,每个存储空间含有所存元素本身的信息,元素之间的逻辑关系是通过数组下标位置简单计算出来的线性表的顺序存储,若一个元素存储在对应数组中的下标位置为i,则它的前驱元素在对应数组中的下标位置为i-,它的后继元素在对应数组中的下标位置为i+
. 在链式存储结构中,存储结点不仅含有所存元素本身的信息,而且含有元素之间逻辑关系的信息,数据的链式存储结构可用链接表来表示。
其中data表示值域,用来存储节点的数值部分。Pl、p2、...、Pill(1n≥)均为指针域,每个指针域为其对应的后继元素或前驱元素所在结点(以后简称为后继结点或前驱结点)的存储位置。通过结点的指针域(又称为链域)可以访问到对应的后继结点或前驱结点,若一个结点中的某个指针域不需要指向其他结点,则令它的值为空(NULL)
. 在数据的顺序存储中,由于每个元素的存储位置都可以通过简单计算得到,所以访问元素的时间都相同
. 而在数据的链接存储中,由于每个元素的存储位置保存在它的前驱或后继结点中,所以只有当访问到其前驱结点或后继结点后才能够按指针访问到,访问任一元素的时间与该元素结点在链式存储结构中的位置有关

在学习分析一个新的数据结构的时候,我们需要从逻辑结构和物理结构这2个不同的层次去理解,所有的数据结构和算法本质上都能在这个大的框架中找到对应的位置,所不同的只是为了解决特定领域的问题时,对一般化的数据结构附加了一些"额外的约束",使之表现出新的特性,同时解决了新的问题

3. 运算(算法)

所谓算法(Algorithm)是描述计算机解决给定问题的操作过程(解题方法),即为解决某一特定问题而由若干条指令组成的有穷序列
一个算法必须满足以下五个准则

. 有穷性: 执行了有限条指令后一定要终止
. 确定性(无二义): 算法的每一步操作都必须有确切定义,不得有任何歧义性
. 可(能)行性: 算法的每一步操作都必须是可行的,即每步操作均能在有限时间内完成
. 输入数据: 一个算法有n(n>=)个初始数据的输入
. 输出数据: 一个算法有一个或多个与输入有某种关系的有效信息的输出

Relevant Link:

http://baike.baidu.com/view/540423.htm
http://student.zjzk.cn/course_ware/data_structure/web/gailun/gailun1.1.1.htm
http://c.biancheng.net/cpp/html/2649.html
http://baike.baidu.com/view/2820182.htm

2. 逻辑结构实例

2.1 堆栈

0x1: 基于顺序表的堆栈

#include <stdio.h>
#include <stdbool.h>
#define LISTSIZE 10
typedef int DataType;
struct Stack {
DataType data[LISTSIZE];
int top; //处了记录大小 还可以记录栈顶位置
};
void init(struct Stack* stack)
{
stack->top = ;
}
bool empty(struct Stack* stack) {
return stack->top == ;
}
void push(struct Stack* stack, DataType d) {
if (stack->top == LISTSIZE)
return;
stack->data[stack->top++] = d;
}
void pop(struct Stack* stack) {
if (empty(stack))
return;
stack->top--;
}
DataType topData(struct Stack* stack) {
return stack->data[stack->top - ];
}
int main()
{
struct Stack stack;
init(&stack);
push(&stack, );
push(&stack, );
push(&stack, ); while (!empty(&stack)) {
printf("%d ", topData(&stack));
pop(&stack);
}
printf("\n"); return ;
}

0x2: 基于链式存储结构的堆栈

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef int DataType;
struct Stack {
DataType data;
struct Stack *next;
};
void init(struct Stack** top)
{
*top = NULL;
}
bool empty(struct Stack* top)
{
return top == NULL;
}
void push(struct Stack** top, DataType d)
{
struct Stack *newNode = (struct Stack*)malloc(sizeof(struct Stack));
newNode->data = d;
newNode->next = *top;
*top = newNode;
}
void pop(struct Stack** top)
{
if (empty(*top))
return;
struct Stack *tempNode = *top;
*top = (*top)->next;
free(tempNode);
}
void topData(struct Stack* top, DataType* data)
{
if (empty(top))
return;
*data = top->data;
}
int main()
{
struct Stack *top;
init(&top);
push(&top, );
push(&top, );
push(&top, ); while (!empty(top)) {
int data;
topData(top, &data);
printf("%d ", data);
pop(&top);
}
printf("\n"); return ;
}

0x3: STL Stack

C++ STL Stack(堆栈)是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。C++ STL栈stack的头文件为:

#include <stack> 

C++ STL栈stack的成员函数介绍

empty(): 堆栈为空则返回真
pop(): 移除栈顶元素
push(): 在栈顶增加元素
size(): 返回栈中元素数目
top(): 返回栈顶元素

1. 代码举例1

#include "stdafx.h"
#include <stack>
#include <vector>
#include <deque>
#include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
deque<int> mydeque(,);
vector<int> myvector(,); stack<int> first;
stack<int> second(mydeque); stack<int,vector<int> > third;
stack<int,vector<int> > fourth(myvector); cout << "size of first: " << (int) first.size() << endl;
cout << "size of second: " << (int) second.size() << endl;
cout << "size of third: " << (int) third.size() << endl;
cout << "size of fourth: " << (int) fourth.size() << endl; return ;
}

2. 代码举例2

#include <iostream>
#include <stack>
using namespace std; int main ()
{
stack<int> mystack;
int sum (); for (int i=;i<=;i++) mystack.push(i); while (!mystack.empty())
{
sum += mystack.top();
mystack.pop();
} cout << "total: " << sum << endl; return ;
}

3. 代码举例3

#include <iostream>
#include <stack>
using namespace std; int main ()
{
stack<int> mystack; for (int i=; i<; ++i) mystack.push(i); cout << "Popping out elements...";
while (!mystack.empty())
{
cout << " " << mystack.top();
mystack.pop();
}
cout << endl; return ;
}

Relevant Link:

http://www.cplusplus.com/reference/stack/stack/
http://www.169it.com/article/2839007600903800247.html

2.2 队列

0x1: 基于顺序表的队列

#include <stdio.h>
#include <stdbool.h> #define QueueSize 6 typedef int DataType;
typedef struct _Queue2{
DataType data[QueueSize];
int front;
int rear;
}Queue2; void init(Queue2* q){
q->front = q->rear = ;
} bool empty(Queue2* q){
return q->rear == q->front;
} /*
-> empty full
-arraysize ~ 0 ~ arraysize
*/
bool full(Queue2* q){
return q->rear - q->front == QueueSize;
} bool push(Queue2* q, DataType d){
if(full(q))
return false;
q->data[q->rear++ % QueueSize] = d;
return true;
} bool pop(Queue2* q){
if(empty(q))
return false;
q->front++;
return true;
} DataType getFront(Queue2* q){
return q->data[q->front % QueueSize];
} int main(int argc, const char * argv[]){
int i = ;
Queue2 q2;
init(&q2);
for (i = ; i < ; i++) {
push(&q2, i);
}
pop(&q2);
push(&q2, );
pop(&q2);
pop(&q2);
push(&q2, );
while (!empty(&q2)) {
printf("%d ", getFront(&q2));
pop(&q2);
}
printf("\n"); return ;
}

0x2: 基于链式表的队列

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h> typedef int DataType;
typedef struct _Queue{
DataType data;
struct _Queue* next;
}Queue; void init(Queue** front, Queue** rear){
*front = NULL;
*rear = NULL;
} bool empty(Queue* node){
return node == NULL;
} void push(Queue** front, Queue** rear, DataType d){
Queue* newNode = (Queue*)malloc(sizeof(Queue));
newNode->data = d;
newNode->next = NULL; if(!empty(*rear))
(*rear)->next = newNode;
*rear = newNode;
//如果队尾指针为空,则表示此时队中没有元素,所以直接将队尾指针指向新创建的队元素节点即可
if(empty(*front))
*front = *rear;
} void pop(Queue** front, Queue** rear){
if(empty(*rear))
return;
Queue* tempNode = *front;
*front = (*front)->next;
free(tempNode);
//判断删除一个队元素后,队是否为空,如果队中没有元素了,也应该将队尾指针置为空,否则队尾指针将是野指针
if(empty(*front))
*rear = NULL;
} void topData(Queue* front, DataType* data){
if(empty(front))
return;
*data = front->data;
} int main(){
Queue* front, *rear;
init(&front, &rear);
push(&front, &rear, );
push(&front, &rear, );
push(&front, &rear, ); while (!empty(front)) {
int data;
topData(front, &data);
printf("%d ", data);
pop(&front, &rear);
}
printf("\n"); return ;
}

0x3: STL Queue

queue模板类的定义在<queue>头文件中
与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque类型
queue的基本操作有

push入队,q.push(x); 将x接到队列的末端
pop: 出队,q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值
front: 访问队首元素,q.front(),即最早被压入队列的元素
back: 访问队尾元素,q.back(),即最后被压入队列的元素
empty: 判断队列空,q.empty(),当队列空时,返回true
size: 返回队列中的元素个数,q.size()

1. 示例代码1

#include <cstdlib>
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int e,n,m;
queue<int> q1;
for(int i=;i<;i++)
q1.push(i);
if(!q1.empty())
cout<<"dui lie bu kong\n";
n=q1.size();
cout<<n<<endl;
m=q1.back();
cout<<m<<endl;
for(int j=;j<n;j++)
{
e=q1.front();
cout<<e<<" ";
q1.pop();
}
cout<<endl;
if(q1.empty())
cout<<"dui lie bu kong\n";
system("PAUSE");
return ;
}

2. 示例代码2

#include <iostream>
#include <queue>
#include <assert.h>
/*
调用的时候要有头文件: #include<stdlib.h> 或 #include<cstdlib> +
#include<queue> #include<queue>
详细用法:
定义一个queue的变量 queue<Type> M
查看是否为空范例 M.empty() 是的话返回1,不是返回0;
从已有元素后面增加元素 M.push()
输出现有元素的个数 M.size()
显示第一个元素 M.front()
显示最后一个元素 M.back()
清除第一个元素 M.pop()
*/
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
queue <int> myQ;
cout<< "现在 queue 是否 empty? "<< myQ.empty() << endl;
for(int i =; i< ; i++)
{
myQ.push(i);
}
for(int i=; i<myQ.size(); i++)
{
printf("myQ.size():%d\n",myQ.size());
cout << myQ.front()<<endl;
myQ.pop();
}
system("PAUSE");
return ;
}

Relevant Link:

http://www.cnblogs.com/LittleHann/p/4392061.html
http://blog.csdn.net/wangshihui512/article/details/8930652
http://www.cplusplus.com/reference/queue/queue/
http://www.169it.com/article/2718050585107790752.html

2.3  树形结构

2.3.1 二叉树

0x1: 逻辑定义

. 在计算机中,二叉树是指每个节点最多只有两个子节点的树形结构
. 其中起始节点叫做根节点,整棵二叉树只有一个根节点。除了根节点之外,每个节点都有一个唯一的父节点
. 其中没有任何子节点的节点叫做叶子节点,除了叶子节点之外,每个节点最多有两个子节点,即叶子节点只有父节点没有子节点
. 除了根节点和叶子节点之外,剩下的节点叫枝节点,枝节点既有父节点也有子节点 . 满二叉树: 如果该二叉树中每层节点均达到最大值,即每个枝节点都有两个子节点,则该二叉树叫满二叉树
. 完全二叉树: 如果该二叉树中除了最下面一层之外,每层节点个数均达到最大值,并且最下面一层的节点都连续集中在左侧,则该二叉树叫做完全二叉树
. 有序二叉树: 满足下列条件的非空二叉树即为有序二叉树
) 若左子树非空,则左子树上所有节点的值均小于等于根节点(传递性)
) 若右子树非空,则右子树上所有节点的值均大于等于根节点(传递性)
) 左右子树亦分别为有序二叉树(递归) . 二叉树具有递归嵌套的空间结构,也就是说对于一棵二叉树来说,可以拆分为若干个小二叉树组成,因为这种逻辑结构,采用递归的方法处理二叉树比较方便
if(空树) 直接处理完毕
else
{
处理根节点;
处理左子树; => 递归
处理右子树; => 递归
}

二叉树是一种逻辑结构的概念,在物理存储层面上,可以采用顺序/链式方式存储

0x2: 物理存储方式

. 顺序存储结构: 一般来说,从上到下,从左到右依次存储节点,对于非完全二叉树来说,采用虚节点来补全二叉树
. (二叉链表)链式存储结构: 一般来说,每个节点中除了存储数据元素本身之外,还需要两个指针,分别记录左右子节点的地址
typedef struct Node{
int data;
struct Node* left;
struct Node* right;
} . (三叉链表)链式存储结构: 每个节点包括四个域
) 数据域
) 两个分别指向其左右子节点的指针域
) 指向其父节点的指针域

0x3: 基本操作(算法)

. 创建
. 销毁
. 插入新元素
. 删除元素
. 查找指定的元素
. 修改指定的元素
. 判断二叉树是否为满
. 判断二叉树是否为空
. 计算二叉树节点的个数
. 获取根节点元素值
. 遍历
) 前序遍历: 对于从树根开始的每一课子树,先处理根节点中的数据,然后处理它的左子树,最后处理它的右子树,简单表示为DLR
) 中序遍历: 对于从树根开始的每一棵子树,先处理它的左子树,然后处理根节点中的数据,最后处理它的右子树,简单表示为LDR
) 后序遍历: 对于从树根开始的每一棵子树,先处理它的左子树,然后处理它的右子树,最后处理根节点中的数据,简单表示为LRD

1. 有序二叉树

. 若左子树非空,则左子树上所有节点的值均小于根节点的值
. 若右子树非空,则右子树上所有节点的值均大于等于根节点
. 左右子树也分别递归地为有序二叉树

用途

. 排序: 无论以何种顺序构建有序二叉树,其中序遍历的结果一定是一个有序序列
. 搜索
) 若搜索目标与根节点的值相等,则搜索成功,否则用搜索目标和根节点的值比较大小
) 若搜索目标小于根节点的值,则在根节点的左子树中继续搜索,否则在根节点的右子树中继续搜索
) 以递归的方式重复以上过程,知道搜索成功,或因子树不存在而宣告失败
) 基于有序二叉树的搜索,可达到对数级的平均时间复杂度

bst.c

#include <stdio.h>
#include <stdlib.h> typedef int DataType;
typedef struct _Node{
DataType data;
struct _Node* left;
struct _Node* right;
}Node; Node* createNode(DataType d){
Node* pn = (Node*)malloc(sizeof(Node));
pn->data = d;
pn->left = pn->right = NULL;
return pn;
} void insert(Node** root, Node* pn){
if(pn == NULL)
return;
if(*root == NULL){
*root = pn;
return;
}
if(pn->data > (*root)->data){
insert(&(*root)->right, pn);
}
else{
insert(&(*root)->left, pn);
}
} void delete(Node** root, DataType k){
Node* p, *f, *s, *q;
p = *root;
f = NULL;
//search the node whose data == k
while(p){
if(p->data == k)
break;
//f is point to p's parent
f = p;
if(p->data > k)
p = p->left;
else
p = p->right;
}
//when break to here, means have benn find out the node
if(p == NULL)
return;
if(p->left == NULL){
//p is the root
if(f == NULL)
*root = p->right;
else if(f->left == p)
f->left = p->right;
else
f->right = p->right;
free(p);
}
else{
q = p;
s = p->left;
while(s->right){
q = s;
s = s->right;
}
if(q == p)
q->left = s->left;
else
q->right = s->left;
p->data = s->data;
free(s);
}
} Node* find(Node* root,DataType d){
if(root == NULL)
return NULL;
if(d > root->data)
return find(root->right, d);
else if(d < root->data)
return find(root->left, d);
else
return root;
} void modify(Node* root, DataType oldData, DataType newData){
Node* p;
p = find(root, oldData);
p->data = newData;
} void clears(Node** root){
if(*root == NULL)
return;
clears(&(*root)->left);
clears(&(*root)->right);
free(*root);
*root = NULL;
} void print(Node* root) {
if (root == NULL) return;
printf("%d ", root->data);
print(root->left);
print(root->right);
} int main() {
Node* root = NULL;
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
insert(&root, createNode());
print(root);
printf("\n"); printf("%d\n", find(root, )->data); delete(&root, );
print(root);
return ;
}

3. 物理结构实例

3.1 链表

0x1:  链表的基本运算

. 追加: 在链表的尾部添加新元素
. 插入: 在特定位置的元素之前或之后加入新元素
. 删除: 删除特定位置的元素
. 遍历: 依次访问链表中的每个元素,不重复、不遗漏

3.1.1  单向线性链表

0x1:  定义

链表(Linked List)是由节点组成的(node)。而节点实质上是一个数据结构(struct or class)。链表和数组(Array)的区别在于链表中的节点在内存中的位置不一定是连续的,并且节点个数无需在编译时确定
节点包含两种信息

. 一种是数据(data)
. 一种是指向另一个节点的指针(指针实质上存储的是节点的物理位置)
. 链表尾节点的指针为空指针

链表结构定义

struct student
{
long num; /*学号 */
float score; /*分数,其他信息可以继续在下面增加字段 */
struct student *next; /*指向下一结点的指针 */
};

aaarticlea/png;base64,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" alt="" />

0x2: 操作

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h> typedef int DataType;
typedef struct _Node{
DataType data;
struct _Node *next;
}Node; void init(Node** head){
*head = NULL;
} int getSize(Node *head){
Node* p = head;
int count = ;
while(p){
count++;
p = p->next;
}
return count;
} Node* getptr(Node* head, int pos){
Node* p = head;
int i = ;
if(p == || pos == ){
return head;
}
for(i = ; p && i < pos; i++){
p = p->next;
}
return p;
} bool insert(Node** head, int position, DataType d){
if(position < || position > getSize(*head)){
return false;
}
//create node
Node* node = (Node*)malloc(sizeof(Node));
node->data = d;
node->next = NULL; //insert before the first node
if(position == ){
node->next = *head;
*head = node;
return true;
} //insert between the node linktable
Node* p = getptr(*head, position - );
Node* r = p->next;
node->next = r;
p->next = node; return true;
} bool erases(Node** head, int pos){
if(pos < || pos >= getSize(*head))
return false;
Node* p = *head;
if(pos == ){
*head = (*head)->next;
free(p);
p = NULL;
return true;
}
p = getptr(*head, pos - );
Node* q = p->next;
p->next = q->next;
free(q);
q = NULL; return true;
} bool set(Node* head, int pos, DataType d){
if(pos < || pos >= getSize(head))
return false;
Node* p = getptr(head, pos);
p->data = d;
return true;
} void clears(Node* head){
while(head){
Node* p = head->next;
free(head);
head = p;
}
} void print(Node* head) {
Node *p = head;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
} int main(){
Node* headList;
init(&headList); insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
print(headList);
erases(&headList, );
print(headList);
set(headList, , );
set(headList, , );
print(headList); return ;
}

3.1.2 单向循环链表

0x1: 定义

. 每个节点依旧跟单向链表一样,包含一个指向下一节点的指针
. 最后一个节点不再指向NULL,指向第一个节点,构成环状
. 单向循环链表可以从任意一个节点出发遍历整个链表

aaarticlea/png;base64,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" alt="" />

3.1.3 双向线性链表

0x1: 定义

由一系列内存中不连续的节点组成,每个节点除了保存数据以外,还需要保存其前后节点的地址,链表首节点的前指针和尾节点的后指针都为NULL,线性和循环的区别在于线性需要一个额外的head头指针来进行遍历

typedef struct Node
{
int data;
struct Node *pNext;
struct Node *pPre;
}NODE, *pNODE;

aaarticlea/png;base64,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" alt="" />

0x2: 操作

. 在给定节点之前插入
) 创建持有待插入元素的新节点,令其前指针指向给定结点的前节点,令其后指针指向给定结点
) 若新建结点存在前节点,则令其前节点的后指针指向新建结点,否则新建节点为新的首节点
) 令新建结点的后节点的前指针指向新建节点
. 删除节点
) 若待删除节点存在前节点,则令其前节点的后指针指向待删除节点的后节点(链节点合并),否则待删除节点的后节点为新的首节点
) 若待删除节点存在后节点,则令其后节点的前指针指向待删除节点的前节点,否则待删除节点的前节点为新的尾节点
) 销毁待删除节点

aaarticlea/png;base64,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" alt="" />

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h> typedef int DataType;
typedef struct _Node{
DataType data;
struct _Node* pre, *next;
}Node; void init(Node** head){
*head = NULL;
} int getSize(Node* head){
Node* p = head;
int count = ;
while(p){
count++;
p = p->next;
}
return count;
} Node* getptr(Node* head, int pos){
Node* p = head;
int i = ;
if(p == || pos == ){
return head;
}
for(i = ; p && i < pos; i++){
p = p->next;
}
return p;
} bool insert(Node** head, int position, DataType d){
if(position < || position > getSize(*head)){
return false;
}
//create node
Node* node = (Node*)malloc(sizeof(Node));
node->data = d;
node->pre = NULL;
node->next = NULL; //insert before the first node
if(position == ){
node->next = *head;
if(*head != NULL)
(*head)->pre = node;
*head = node;
return true;
} //insert between into the node linktable
Node* p = getptr(*head, position - );
Node* r = p->next;
node->next = r;
r->pre = node;
p->next = node;
node->pre = p; return true;
} bool erases(Node** head, int pos){
if(pos < || pos >= getSize(*head))
return false; //erase the first node
Node* p = *head;
if(pos == ){
*head = (*head)->next;
if(*head != NULL)
(*head)->pre = NULL;
free(p);
p = NULL;
return true;
} //erase the node between the node linktable
p = getptr(*head, pos - );
Node* q = p->next;
p->next = q->next;
q->next->pre = p;
free(q);
q = NULL; return true;
} bool set(Node* head, int pos, DataType d){
if(pos < || pos >= getSize(head)){
return false;
}
Node* p = getptr(head, pos);
p->data = d;
return true;
} void clears(Node* head){
while(head){
Node* p = head->next;
free(head);
head = p;
}
} void print(Node* head) {
Node *p = head;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
} int main(){
//head point
Node* headList;
init(&headList); insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
insert(&headList, , );
print(headList);
erases(&headList, );
print(headList);
set(headList, , );
set(headList, , );
print(headList); return ;
}

3.1.4 双向循环链表

0x1: 定义

. 每个节点除了存放元素数据以外,还需要保存指向下一个节点的指针,即所谓的后指针,以及指向前一个节点的指针,即所谓的前指针
. 链表首节点的前指针指向链表尾节点,尾节点的后指针指向首节点

aaarticlea/png;base64,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" alt="" />

3.1.5 数组链表

0x1: 定义

链表中的每个元素都是一个数组,即由数组构成的链表

aaarticlea/png;base64,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" alt="" />

3.1.6 链表数组

0x1: 定义

数组中的每一个元素都是一个链表,即由链表构成的数组

aaarticlea/png;base64,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" alt="" />

PHP内核的Hashtable就是采用这种物理存储结构

3.1.7 二维链表

0x1: 定义

链表中的每一个元素都一个链表

aaarticlea/png;base64,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" alt="" />

3.2  顺序存储

使用数组进行存储

4. 算法

0x1: 基本概念

. 算法就是对解决问题的方案进行准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制
. 算法中的指令描述的是一个计算过程,在它的作用下,系统从初始状态和初始输入(允许为空)开始,经历一些列有限且被明确定义的中间状态,最终产生所要求的输出,并停止于终止状态
. 同一个问题,不同的算法,可能会在时间、空间等方面表现出明显的差异,一个算法的优劣可以用时间复杂度和空间复杂度来衡量

0x1: 基本特征

. 有穷性: 算法必须能在执行有限个步骤后终止
. 确切性: 算法的每个步骤都必须有确切的定义(DFN 有穷状态机)
. 输入项: 算法有规范化的输入,以表示运算对象的初始状态
. 输出项: 算法至少有一个输出,以反映处理的最终结果
. 可行性: 算法中的每个执行步骤都必须能在有限时间内完成

0x3: 基本要素

. 运算和操作: 计算机可以执行的基本操作是以指令的形式描述的,包括以下
) 算法运算
1.1) 加
1.2) 减
1.3) 乘
1.4) 除
1.5) 模
..
) 关系运算
2.1) 大于
2.2) 小于
2.3) 等于
2.4) 不等于
..
) 逻辑运算
3.1) 与
3.2) 或
3.3) 非
..
) 数据传输
4.1) 输入
4.2) 输出
4.3) 赋值
. 流程和控制: 算法的功能不仅取决于所选用的操作,还与各操作之间的执行顺序有关

0x4: 算法的评定标准

. 时间复杂度: 算法的时间消耗与问题规模之间的函数关系: T(N) = O(F(N))
) 常数级复杂度: O()
) 对数级复杂度: O(logN)
) 线性级复杂度: O(N)
) 线性对数级复杂度: O(NlogN)
) 平方级复杂度: O(N2)
. 空间复杂度: 算法的空间消耗与问题规模之间的函数关系: S(N) = O(F(N))
//原则上说,复杂度曲线越平越好,越陡越差,常数级复杂度最为理想
. 正确性: 执行算法的结果是否满足要求
. 可读性: 算法本身可供人们阅读的难易程度
. 健壮性: 算法对非正常输入的反应和处理能力,也称容错性

0x5: 算法的思想方法

. 递推法
) 通过计算前面的一些项来得出序列中指定项的值
) 其思想是把一个复杂而庞大的计算过程转化为简单过程的多次重复
. 递归法
) 把大问题转化为原问题相似的小问题来求解
) 递归的神奇之处在于用有限的语句来定义无限的对象的集合
) 递归需要有终止条件、递归前进段和递归返回段,若终止条件不满足则递归前进,否则递归返回
. 穷举法
) 对于要解决的问题,列举出它所有的可能性,逐个判断其中哪些符合问题所要求满足的条件,从而得到问题的解
. 贪心算法
) 自顶向下,以迭代的方式做出相继的贪心选择,没做一次贪心选择,就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到相应子问题的一个最优解,虽然每一步都能够保证局部最优解,但最终得到的全局解未必最优
. 分治法
) 把一个复杂问题分成两个或更多相同或相似的子问题,再把子问题分成更小的子问题,知道最后的子问题可以简单地直接求解,原问题的解即子问题解的合并
. 动态规划法
) 将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解
. 迭代法
) 按照一定的规则,不断地用旧值推算出新值,直到满足某种特定条件为止
. 分支界限法
) 把全部可行的解空间不断分隔为越来越小的子集,称之为分支,并为每个子集计算一个下界或上界,称之为定界
) 在每次分支后,对界限超出已知可行解的子集不再做进一步分支,搜索范围迅速收敛
) 这一过程一直进行到找出可行解为止,该可行解的值不大于任何子集的界限,因此这种算法一般可以求得全局最优解
. 回溯法
) 在包含问题所有解的解空间树中,从根节点出发,按深度优先搜索解空间树,当搜索到某一节点时,先判断该节点是否包含问题的解,若包含则从该节点出发继续搜索,否则逐层向其父节点回溯
) 若希望求得问题的所有解,则必须回溯到根,且根节点的所所有可行子树都必须被搜索到才能结束,否则只要搜索到问题的一个解即可终止

0x6: 算法的分类

. 按照执行期限分类
) 有限算法: 算法过程无论长短,总能在有限时间内终止
) 无限算法: 算法过程因无终止条件或终止条件无法得到满足,而永不停息
. 按照解的确定性分类
) 确定性算法: 对于确定的输入,算法总能得到确定的结果
) 非确定算法: 对于确定的输入,算法得到的结果并不唯一确定
. 按照理论和应用的专门领域分裂
) 基本算法: 数值分析算法
) 排序算法: 数据结构算法
) 搜索算法: 动态规划算法
) 代数算法: 压缩解压算法
) 几何算法: 加密解密算法
) 数论算法: 数据摘要算法
) 图论算法: 数据挖掘算法
) 随机算法: 随机森林算法
) 并行算法: 人工智能算法
) 分类算法: 模式识别算法

4.1 查找算法

1. 线性查找

算法描述

. 从头开始,依次将每一个元素与查找目标进行比较
. 或者找到目标,或者找不到目标

伪码实现

for each item in the list
if that item has the desired value
stop the search and return the item's location
return not found

总体评价

. 平均时间复杂度: O(N)
. 对数据的有序性没有要求

实例代码

#include <stdio.h>

typedef char DataType;
int mySearch(DataType* ts, int n, const DataType d){
int i = ;
for(i = ; i < n; i++){
if(ts[i] == d)
return i;
}
return -;
} int main(){
char cs[] = {'*', 'A', 'B', 'C', 'D', 'E'};
printf("%d\n", mySearch(cs, , '*'));
printf("%d\n", mySearch(cs, , 'A'));
}

2. 二分查找

算法描述

. 假设表中的元素按升序排列
. 若中间元素与查找目标相等,则查找成功,否则利用中间元素将表划分成前后两个子表
. 若查找目标小于中间元素,则在前子表中查找,否则在后子表中查找
. 重复以上过程,直到查找成功,或者因子表不存在而宣告失败

伪码实现

基于递归的二分查找
function binarySearch(a, value, left, right)
if right < left
return not found
mid := floor( (right - left) / ) + left
if a[mid] == value
return mid
if value < a[mid]
return binarySearch(a, value, left, mid - )
else
return binarySearch(a, value, mid + , right) 基于循环的二分查找
function binarySearch(a, value, left, right)
while left <= right
mid := floor( (right - left) / ) + left
if a[mid] == value
return mid
if value < a[mid]
right := mid -
else
left := mid +
return not found

总体评价

. 平均时间复杂度: O(logN)
. 数据必须有序

实例代码

#include <stdio.h>

typedef char DataType;
int mySearch(DataType *ts, int n, DataType d){
int L = ;
int R = n - ;
while(L <= R){
int M = (L + R) / ;
if(ts[M] == d)
return M;
if(ts[M] < d)
L = M + ;
else R = M - ;
}
return -;
} int main()
{
char cs[] = {'*','A','B','C','D','E'};
printf("%d\n", mySearch(cs, , '*'));
printf("%d\n", mySearch(cs, , 'A'));
printf("%d\n", mySearch(cs, , 'D'));
printf("%d\n", mySearch(cs, , 'C'));
}

4.2 排序算法

1. 冒泡排序

算法描述

. 相邻元素两辆比较,前者大于后者,彼此交换
. 从第一对到最后一对,最大的元素沉降到最后
. 针对未排序部分,重复以上步骤,沉降次最大值
. 每次扫描越来越少的元素,直至不再发生交换

伪码实现

procedure bubbleSort(A:list of sortable items)
n = length(A)
repeat
swapped = false
for i = to n- inclusive do
if A[i-] > A[i] then
swap(A[i-], A[i])
swapped = true
end if
end for
n = n -
until not swapped
end procedure

总体评价

. 平均时间复杂度: O(N2)
. 稳定排序
. 对数据的有序性非常敏感(swap的过程需要消耗时间)

代码示例

#include <stdio.h>
#include <stdbool.h> typedef int DataType; void bubble(DataType* a, int n){
int i = , j = ;
for(i = ; i < n-; i++){
bool flag = true;
for(j = ; j < n-i-; j++){
if(a[j] > a[j+]){
DataType t = a[j];
a[j] = a[j+];
a[j+] = t;
flag = false;
}
}
if(flag)
break;
}
} void print(DataType* a, int n) {
int i = ;
for (i = ; i < n; i++)
printf("%d ", a[i]);
printf("\n");
} int main() {
int a[] = {, , , , , , , , , };
bubble(a, );
print(a, ); return ;
}

2. 插入排序

算法描述

. 首元素自然有序
. 取出下一个元素,对已排序序列,从后向前扫描
. 大于被取出元素者后移
. 小于等于被取出元素者,将被取出元素插入其后
. 重复步骤2,直至处理完所有元素

伪码实现

for i =  to length(A)
x = A[i]
j = i
while j > and A[j-] > x
A[j] = A[j-]
j = j -
A[j] = x

总体评价

. 平均时间复杂度: O(N2)
. 稳定排序
. 对数据的有序性非常敏感(即有序性影响最终的交换次数)
. 不交换只移动,优于冒泡排序

代码示例

#include <stdio.h>
#include <stdbool.h> typedef int DataType; void insert(DataType* a, int n){
int i = ;
for(i = ; i < n; i++){
DataType t = a[i];
int j = ;
for(j = i; j > && a[j-] > t; j--){
a[j] = a[j-];
}
a[j] = t;
}
} void print(DataType* a, int n) {
int i = ;
for (i = ; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
int main() {
int a[] = {, , , , , , , , , };
insert(a, );
print(a, ); return ;
}

3. 选择排序

算法描述

. 在整个序列中寻找最小元素,与首元素交换
. 在剩余序列中寻找最小元素,与次首元素交换
. 以此类推,直到剩余序列中仅包含一个元素

伪码实现

function selectionSort(list[..n])
for i from to n-
minIndex = i
for j from i+ to n
if list[j] < list[minIndex]
minIndex = j
swap list[i] and list[minIndex]

总体评价

. 平均时间复杂度: O(N2)
. 非稳定排序(相同元素在排序过程中可能会改变顺序)
. 对数据的有序性不敏感(必须全量遍历完)
. 交换次数少,优于冒泡排序

代码示例

#include <stdio.h>
#include <stdbool.h>
#include <algorithm> typedef int DataType; void selects(DataType* a, int n){
int i = ;
for(i = ; i < n; i++){
int k = i;
int j = ;
for(j = i + ; j < n; j++){
if(a[j] < a[k]){
k = j;
}
}
if(k != i){
std::swap(a[k], a[i]);
}
}
} void print(DataType* a, int n) {
int i = ;
for (i = ; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
int main() {
int a[] = {, , , , , , , , , }; selects(a, );
print(a, );
return ;
}

4. 快速排序

算法描述

. 从待排序序列中任意挑选一个元素,作为基准
. 将所有小于基准的元素放在基准之前,大于基准的元素放在基准之后,等于基准的元素放在基准之前或之后,这个过程称为分组
. 以递归的方式,分别对基准之前和基准之后的分组继续进行分组,直到每个分组内的元素个数不多于1为止

就地分组

. 在不额外分配内存空间的前提下,完成分组过程

伪码实现

基于分组的排序
quickSort(A, i, k):
if i < k:
p := partition(A, i, k)
quickSort(A, i, p-)
quickSort(A, P+, K) 就地分组
partition(array left, right)
pivotIndex := choosePivot(array, left, right)
pivotValue := array(pivotIndex)
i = left
j = right
while i < j
while i < pivotIndex and array[i] <= pivotValue
i = i +
if i < pivotIndex
array[pivotIndex] = array[i]
pivotIndex = i
while j > pivotIndex and array[j] >= pivotValue
j = j -
if j > pivotIndex
array[pivotIndex] = array[j]
pivotIndex = j
array[pivotIndex] = pivotValue
return pivotIndex

总体评价

. 平均时间复杂度: O(NlogN)
. 非稳定排序
. 若每次都能均匀分组,则排序速度最快

实例代码

#include <stdio.h>
#include <stdbool.h> typedef int DataType; void qsorts(DataType* a, int n){
if(n <= )
return;
int L = ;
int R = n - ;
while(L < R){
//R backing
while(L < R && a[L] <= a[R])
R--;
DataType t = a[L];
a[L] = a[R];
a[R] = t;
//L going
while(L < R && a[L] <= a[R])
L++;
t = a[L];
a[L] = a[R];
a[R] = t;
}
qsorts(a, L);
qsorts(a+L+, n-L-);
} void print(DataType* a, int n) {
int i = ;
for (i = ; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
int main() {
int a[] = {, , , , , , , , , }; qsorts(a, );
print(a, ); return ;
}

5. 归并排序

算法描述

. 将待排序序列从中间划分为两个相等的子序列
. 以递归的方式分别对两个子序列进行排序
. 将两个有序的子序列合并成完整序列

有序合并

. 分配合并序列,其大小为两个有序序列大小之和
. 设定两个指针,分别指向两个有序序列的首元素
. 比较指针目标,较小者进入合并序列,指针后移
. 重复步骤3,直到某一指针到达序列末尾
. 将另一序列的剩余元素直接复制到合并序列末尾

伪码实现

基于合并的排序
function mergeSort(list m)
if length(m) <=
return ,
var list left, right
var integer middle = length(m) /
for each x in m before middle
add x to left
for each x in m after or equal middle
add x to right
left = mergeSort(left)
right = mergerSort(right)
return merge(left, right) 有序合并
function merge(left, right)
var list result
while length(left) > or length(right) >
if length(left) > and length(right) >
if first(left) <= first(right)
append first(left) to result
left = rest(left)
else
append first(right) to result
rigth = rest(right)
else if length(left) >
append first(left) to result
left = rest(left)
else if length(right) >
append first(right) to result
right = rest(right)
end while
return result

总体评价

. 平均时间复杂度: O(2NlogN)
. 稳定排序
. 对数据的有序性不敏感
. 非就地排序,需要辅助空间,不适合处理海量数据

代码示例

#include<stdlib.h>
#include<stdio.h>
#define SIZE 8 void Merge(int sourceArr[], int startIndex, int midIndex, int endIndex){
int start = startIndex;
int i, j, k;
int tempArr[SIZE];
for(i=midIndex+, j=startIndex; startIndex <= midIndex && i<=endIndex; j++){
if(sourceArr[startIndex] <= sourceArr[i])
tempArr[j] = sourceArr[startIndex++];
else
tempArr[j] = sourceArr[i++];
}
if(startIndex <= midIndex){
for(k = ; k <= midIndex - startIndex; k++){
tempArr[j+k] = sourceArr[i+k];
}
}
for(i=start; i<=endIndex; i++)
sourceArr[i] = tempArr[i];
} void MergeSort(int sourceArr[], int startIndex, int endIndex){
int midIndex;
if(startIndex < midIndex){
midIndex = (startIndex + endIndex) / ;
MergeSort(sourceArr, startIndex, midIndex);
MergeSort(sourceArr, midIndex + , endIndex);
}
} void print(int* a, int n) {
int i = ;
for (i = ; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
int main() {
int a[] = {, , , , , , , , , }; MergeSort(a, , );
print(a, ); return ;
}

Copyright (c) 2016 Little5ann All rights reserved

上一篇:【数据结构】KMP算法


下一篇:Jquery实现图片左右滚动(自动)