随笔分类 -  数据结构

摘要:今天就写个排序里比较简单的两种算法:冒泡,选择思想:冒泡就是每次循环都两两比较,小的话就交换数据,这样一趟下来,最小的就选了出来,或者说是冒了出来。多次循环后,数组便是有序数组。选择是从数组中选出一个小的,然后记录下索引,到一次for循环后对比,判断是否需要交换数据,多次循环后,数组就是有序数组。这两个算法比较简单,但是也很经典,所以在这就记录下一篇。对于他们的时间复杂度,在很多排序中算是较差的,但是基础思想还是有学习的地方的,而且这两个都是不稳定排序。下面直接上代码,只做简单参照: 1 /* 2 *冒泡。选择排序 3 *丁洋 4 */ 5 #include 6 #include 7 /* . 阅读全文
posted @ 2013-12-25 18:54 丁洋 阅读(399) 评论(0) 推荐(0)
摘要:花了些时间好好看了堆排序的内容,代码也敲了,现在来总结一下。为了说明白点,有些图片我就从网上截取了。首先是堆的概念。数据结构中的堆,又叫二叉堆一般用数组来表示堆得结构,或者说是把堆数组化。举个列子来看:这样就很清楚的看出了堆的储存结构。接着就是堆得操作处理了。首先堆的插入操作:上代码: 1 void Heap_insert_fix(int a[],int n) 2 { 3 int temp; 4 int i,j; 5 i = n; 6 j = (i - 1) / 2;/*父节点*/ 7 temp = a[i];/*记录插入的数据*/ 8 ... 阅读全文
posted @ 2013-12-24 22:44 丁洋 阅读(341) 评论(0) 推荐(0)
摘要:今天来谈谈排序效率较高的归并排序算法。思想:分治 + 合并具体点说就是将一个数组分成左右两个部分,然后将左右两个部分的顺序排好后,在合并到一起!那么怎么将左右两个部分的顺序排好呢?我们这样看,用递归的思想,将左右两个部分再次分成各个的两个部分,直到每个部分的数据个数为1。这样我们便得到了有序的部分数组。接着,我们将这些数组合并。最终便会成为有序的数组。看代码: 1 /* 2 *归并排序 3 *丁洋 4 */ 5 #include 6 #include 7 #include 8 #include 9 /*10 *合并数组11 *a[first --- mid-1]12 *a[mid+1... 阅读全文
posted @ 2013-12-23 13:59 丁洋 阅读(335) 评论(0) 推荐(0)
摘要:写一个系列的经典算法,共同学习!1.快速排序基本思想:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。在网上看到一篇博客,把快速排序命名为 挖坑填数+分治法,感觉很有道理,所以等会程序就按这两部来写。先说说挖坑填数的思想:1.i=L;j=R; 将基数挖出形成第一个坑a[i].2.j--由后向前找出比它的小的数,找到后挖出此数填前一个坑a[i].3.i++由前向后找出比它大的数,找到后挖出此数填前一个坑a[j].4.重复2,3步骤直到i==j,将基数填入a[i]中。代码实现:(挖坑 阅读全文
posted @ 2013-12-22 21:32 丁洋 阅读(393) 评论(0) 推荐(0)
摘要:第一章设计要求1.1需求分析本系统是基于哈希表的图书信息管理系统,实现了图书查找,删除,添加功能,并且可以借阅图书,归还图书,包括了还书日期超过时的罚款功能,还有将图书的信息导出,可以方便保存,基本实现了图书的管理功能,方便管理人员的管理工作。1.2本系统的主要功能(功能图,详细功能描述)1.添加图书信息2.显示图书信息3.查找图书信息4.删除图书5.借阅图书6.归还图书7.保存图书信息到指定文件中第二章概要设计2.1主界面设计2.2存储结构设计typedefstruct{intyear;intmonth;intday;}data;typedefstruct{charnum[5];//读者编号 阅读全文
posted @ 2013-03-01 14:51 丁洋 阅读(5013) 评论(1) 推荐(1)