![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
期待一片自己的蓝天
在加利福尼亚州门洛帕克的Facebook园区入口可以看到一个标牌,正面是经典的竖起大拇指点赞的图案,然而在这个标牌的背面,掩映在树荫里的依然是园区昔日所有者2009年被甲骨文公司Oracle吞并的Sun电子计算机公司Sun Microsystems Inc.的名字。Facebook之所以在牌子上留下Sun电子计算机公司的名字就是为了警醒自己,如果企业停止创新的步伐,就会沦落至如此下场。
展开
-
直接插入排序
#includevoid insertionSort(int *a,int n){ int i,j,temp; for(i=2;i<=n;++i)/*数组从下标1开始存储,第一个元素有序,所以从第二个开始处理*/ { temp=a[i];/*将带插入元素暂存于temp中*/ j=i-1; while(j>=1&&temp<原创 2014-04-15 21:08:22 · 692 阅读 · 0 评论 -
用C语言解决迷宫问题
迷宫问题,需要用到栈结构。原创 2014-06-10 21:52:33 · 6030 阅读 · 2 评论 -
合并两个链表的问题
两种方法合并两个链表。原创 2014-06-10 10:37:13 · 985 阅读 · 1 评论 -
冒泡排序的改进:一次同时冒一个大泡,一个小泡
void BubbleSort(int *a, int n){ int i, low, high; low = 0; high = n - 1; while(low<high){ for (i = low; i < high; ++i){ if (a[i]>a[i + 1]) swap(a + i, a + i + 1); } --high; for (i原创 2014-06-11 22:04:05 · 961 阅读 · 1 评论 -
三种快速排序法
快速排序法的三种形式。原创 2014-06-11 22:06:19 · 1022 阅读 · 0 评论 -
巧妙利用快速排序法的原理求一个数组中的第10大元素
巧妙利用快速排序法的原理求一个数组中的第10大元素原创 2014-06-11 22:10:49 · 1315 阅读 · 0 评论 -
根据二叉树的先序序列和中序序列还原二叉树并打印后序序列
根据二叉树的先序序列和中序序列还原二叉树并打印后序序列原创 2014-05-31 00:26:39 · 1963 阅读 · 0 评论 -
同时寻找最大数和最小数的最优算法以及寻找最大的两个数所需的最少比较次数
同时寻找最大数和最小数的最优算法以及寻找最大的两个数所需的最少比较次数原创 2014-09-26 00:01:27 · 4844 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说原创 2014-06-12 01:11:13 · 631 阅读 · 0 评论 -
用头插、尾插、按顺序插入创建一个不带头节点的链表
用头插、尾插、按顺序插入创建一个不带头节点的链表。原创 2014-06-09 16:16:59 · 1578 阅读 · 0 评论 -
对c语言系统库函数、堆排序、希尔排序、折半插入排序、快速排序消耗时间的比较
对c语言系统库函数、堆排序、希尔排序、折半插入排序、快速排序消耗时间的比较原创 2014-06-09 13:26:33 · 2343 阅读 · 0 评论 -
希尔排序
插入排序的算法复杂度为O(n2),但如果序列为正序可提高到O(n),而且直接插入排序算法比较简单,希尔排序利用这两点得到了一种改进后的插入排序。一. 算法描述希尔排序:将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小的增量,再将数组分割为多个子序列进行排序......最后选择增量为1,即使用直接插入转载 2014-04-16 15:25:04 · 726 阅读 · 0 评论 -
折半插入排序
#includevoid binaryInsertion(int *a,int n){ int top,bottom,mid; int i,j; for(i=2;i<=n;i++)/*从第二个元素开始排序*/ { top=1; bottom=i-1; a[0]=a[i]; while(top<=bo原创 2014-04-15 20:49:12 · 889 阅读 · 0 评论 -
选择类排序-堆排序
堆排序算法原创 2014-04-16 21:23:57 · 907 阅读 · 0 评论 -
对线性表的操作
#include#include#include#define FALSE_FP -1#define TRUE 1#define FALSE 0#define ERROR 0;#define OK 1;#define LIST_INIT_SIZE 10#define LIST_INCREATENT 2typedef int ElemType;typedef struc原创 2014-05-04 23:48:25 · 986 阅读 · 0 评论 -
建立一棵二叉排序树
#include#includetypedef int ElemType;typedef struct BTNode/*树节点定义*/{ ElemType key; struct BTNode *lchild; struct BTNode *rchild;}BTNode;int BSTInsert(BTNode *&bt, int key)/*向二叉排序树插入一个新的节点*原创 2014-05-05 23:33:34 · 6089 阅读 · 2 评论 -
数据结构中线性表的基本操作-合并两个线性表-按照元素升序排列
数据结构中线性表的基本操作。原创 2014-05-07 11:32:27 · 4137 阅读 · 1 评论 -
队列的基本操作
队列的存储结构有两种:一种是线性表存储,一种是链式存储。用线性表存储时,要注意队列的长度有没有超过预先设置的大小,在这个程序中,队列的可以在存满的时候,自动增加队列的长度。用链表存储,则没有长度的限制。原创 2014-06-08 22:25:22 · 1084 阅读 · 0 评论 -
栈的基本操作
栈的存储结构有两种:一种是线性栈,一种是链式栈。下面分别是这两种存储结构的实现。原创 2014-06-08 22:34:28 · 1109 阅读 · 0 评论 -
二路归并排序
“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。以n个元素的数组为例:可以看作为n个有序的子表,每个子表的长度为1,然后两两合并,得到n/2个长度为2或1的有序子表。然后再两两合并......如此重复,直到合并为一个长度为n的有序表为止。原创 2014-09-25 16:40:32 · 1186 阅读 · 0 评论