随笔分类 - 算法
摘要:一、插入排序的主要分类:1、直接插入排序;2、折半插入排序;3、2-路插入排序;4、希尔排序(缩小增量排序)。二、直接插入排序(简便,容易实现):1、排序过程:整个排序过程为n-1趟插入,即先将序列中第1个元素看成是一个有序子序列,然后从第2个元素开始,逐个进行插入,直至整个序列有序。 2、算法实现:void InsertSort(int a[], int len){ for (int i = 1; i < len; ++i) { int temp = a[i]; //先把将要插入的元素保存 int j = i; while (j > 0 && temp <
阅读全文
摘要:串,即字符串。计算机上的非数值处理的对象基本上是字符串数据。但是,由于现在我们使用的计算机硬件结构主要是反映数值计算的需要的,在处理字符串数据时比处理整数和浮点数要复杂的多。而且,对于不同类型程序,所处理的字符串具有不同的特点,要有效地实现字符串的处理,就必须根据具体情况使用合适的存储结构。串的存储表示主要有:1.定长顺序存储表示; 2. 堆分配存储表示; 3.块链存储表示。 以下介绍比较简单的定长顺序存储表示。 串定长顺序存储表示,说白了,就是用以个固定长度字符数组来存放。1.定义“头部”#define MAXSTRLEN 255 //所能定义的最大串长typedef unsigned c.
阅读全文
摘要:和线性类似,队列也可以有俩种存储表示。一个链队列需要都两个分别指向队头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。为了操作方便,除了以上两个指针外,我们还为对列添加一个头结点。初始化是头指针和尾指针都指向头结点,因此,当头指针和尾指针均指向头结点时,此队列为空。1. 定义存储结构:typedef struct QNode{ QElemType data; //存放的数据,称为数据域 struct QNode *next; //存放下一个的地址,称为指针域} QNode, *QueuePtr;typedef struct{ QueuePtr front; //队头指针 Queue...
阅读全文