算法与数据结构
文章平均质量分 73
普通网友
这个作者很懒,什么都没留下…
展开
-
简单选择排序
简单选择排序 算法描述: *从未排序部分选择最小的放到已经排序的序列后面 如图: C++实现:原创 2014-06-17 22:06:06 · 294 阅读 · 0 评论 -
简单选择排序
n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空。 ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。 …… ③第i趟排序 第i趟排序开始时,当原创 2014-06-17 21:51:48 · 119 阅读 · 0 评论 -
折半查找
算法描述: 假定有n个不同的整数n>=1,且它们已经排序并且存放在数组list中.也就是说,list[0] 设两个变量left和right分别表示被查找表的左边界和右边界,初始化时,left=0,right=n-1.令middle=(left+right)/2为list的中间位置.如果将list[middle]与searchnum进行比较,则会出现下列三种情况: (1)searc原创 2014-06-17 22:26:57 · 338 阅读 · 0 评论 -
二叉树
在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在出度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;深度为k的二叉树至多有2^(k) -1个结点原创 2014-07-04 22:09:38 · 429 阅读 · 0 评论 -
静态链表
#include #include using namespace std; const int MAX = 100; typedef struct node { int data; int next; }node; node arr[MAX]; int create(node *a); void myprintf(node *a); int main(void) { int l原创 2014-07-02 12:57:57 · 252 阅读 · 0 评论 -
双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。原创 2014-07-02 12:58:33 · 281 阅读 · 0 评论 -
线性表
线性表(Linear List)是由n(n≥0)个数据元素(结点)a[0],a[1],a[2]…,a[n-1]组成的有限序列。 其中: 数据元素的个数n定义为表的长度 = "list".length() ("list".length() = 0(表里没有一个元素)时称为空表)将非空的线性表(n>=0)记作:(a[0],a[1],a[2],…,a[n-1])数据元素a[i](0≤i≤n-原创 2014-07-02 13:01:03 · 354 阅读 · 0 评论 -
单链表
单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。 c++代码:原创 2014-07-02 12:56:35 · 261 阅读 · 0 评论 -
快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 算法描述: 设要排序的数组是A[0]……A[N-1],首先任原创 2014-06-27 19:04:50 · 213 阅读 · 0 评论 -
起泡排序改进版
鉴于对于起泡排序算法,前面未排序的部分有可能在遍历过程中已经有序,这种情况bian原创 2014-06-26 18:00:44 · 544 阅读 · 0 评论 -
归并排序
归并操作的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置 第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重复步骤3直到某一指针超出序列尾 将另一序列剩下的所有元素直接复制到合并序列尾 归并排序的效率是比较高的,设原创 2014-06-26 19:27:42 · 261 阅读 · 0 评论 -
传统起泡排序
算法描述: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。原创 2014-06-26 17:52:43 · 267 阅读 · 0 评论 -
折半插入排序
折半插入排序是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。原创 2014-06-26 21:19:01 · 309 阅读 · 0 评论 -
插入排序
具体算法描述如下: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置 ⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 ⒌ 将新元素插入到下一位置中 ⒍ 重复步骤2~5 描述例图原创 2014-06-26 20:28:02 · 224 阅读 · 0 评论