data&structures
AlanLiu1988
这个作者很懒,什么都没留下…
展开
-
数值计算和非数值计算的区别
数值算法求解连续数学的问题,比如解方程,求积分等等,主要的课程有数学分析,数值方法非数值算法求解离散数学的问题,比如图,树,组合之类的,主要的课程有离散数学,数据结构现在,非数值方面的应用比较多一些...原创 2012-06-26 11:18:18 · 3489 阅读 · 0 评论 -
排序 - 堆排序
堆排序的概念:首先,我们先要理解堆的定义,堆定义:n个关键字序列K1,K2,...,Kn称为(Heap),当且仅当该序列满足如下性质(简称:堆性质):(1)k(i)<=k(2i) 且 k(i)<=k(2i+i) (1<=i<=n/2),当然,这是最小根堆,(2)k(i)>=k(2i) 且 k(i)>=k(2i+i) (1<=i&...原创 2012-07-11 16:31:33 · 137 阅读 · 0 评论 -
排序 - 希尔排序
希尔排序的概念:希尔排序(Shell Sort)是插入排序的一种,是针对直接插入排序的算法的改进。该方法又称缩小增量排序。那么什么是缩小增量排序呢?首先,我们再来理解下直接插入排序,我们在使用它时,是循环它的第二个数值和它后面的属于与它前面的数值进行比较。如果小于前面的数值,则将当前数值保存为一临时变量,将将大于当前值的数值往后挪一位,至少前面没有数值比当前...原创 2012-07-10 16:32:28 · 127 阅读 · 0 评论 -
排序 - 直接插入排序
前面,我们提到了,冒泡排序非标准版,标准版,优化版,和选择排序,下面我们来说下直接插入排序直接插入排序的作法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,是有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中;第二趟把第三个数据与前两个数从后往前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就...原创 2012-07-09 16:01:03 · 133 阅读 · 0 评论 -
排序 - 简单选择排序
前面我们提到过冒泡排序的非标准版,用的是自上而下,每一个元素都与其它元素进行比较,如果前面大于后面的,则交换它们的值,那此时就会出现一个性能上的问题,因为在第二层循环体内,如果发现前面的元素大于后面的元素,就会交换它们的值。而我们知道,二层循环体执行结束后的意义就是讲最小值放到前面,至于后面数值的顺序,它的排列时无意义的。我们在后面的循环中才会将其排...原创 2012-07-06 18:14:23 · 116 阅读 · 0 评论 -
排序 - 冒泡排序(标准优化版)
前面我们提到冒泡排序的标准版,下面我们来对冒泡排序进行优化。为什么要进行优化呢?首先,我们要知道,冒泡排序用的是相连两个之间的比较。而最外层的循环次数是数组的长度-1,那么,有没有不用全部循环结束,就能排好序呢?这种情况是有的,比如,我们需要排序的序列是{2,1,3,4,5,6,7,8}也就是说,除了第一和第二元素之外,别的都是正常的排序...原创 2012-07-06 17:35:58 · 171 阅读 · 0 评论 -
排序 - 冒泡排序(标准版)
上文我们提到了冒泡排序的非标准版,主要区别在于,不是两两相连的元素进行比较 下面给出标准版的 void BubbleSort(SqList *L){ int i,j; for(i=1;i<L->Length;i++){ for(j=L->Length-1;j>=i;j--) ...原创 2012-07-06 17:20:40 · 237 阅读 · 0 评论 -
排序 - 冒泡排序(非标准版)
冒泡排序的基本概念:依次比较相邻的两个数,将小的放在前面,大数放在后面。即在第一趟:首先比较第1个和第二个数,将小数放前,大数放后,然后比较第2个和第3个数,将小数放前,大数放后,如此继续,直到比较最后两个数,将小数放前,大数放后。 至此第一趟结束,将最大的放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不在小于第2个数...原创 2012-07-06 16:31:47 · 126 阅读 · 0 评论 -
数据结构-基本概念和术语
一、基本概念1、数据(Data): 是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机处理的符号的总称。2、数据元素(Data Element): 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。 3、数据对象(Data Object): 是...原创 2012-06-26 14:03:43 · 154 阅读 · 0 评论 -
排序 - 归并排序(一)
归并排序的概念:归并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序的序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体的有序序列。首先,我们要注意以上的几个关键字,若干子序列,有序的我们要保证我们将序列拆分成若干个子序列,并且各个子序列是有序的。当子序列是有序的时,我们再采用两两合并的方法,并使得合并的序列也是有序的。...原创 2012-07-13 15:41:49 · 183 阅读 · 0 评论