摘要:
之前在冒泡排序的附录中提到可以在每次循环时候,不用交换操作,而只需要记录最小值下标,每次循环后交换哨兵与最小值下标的书,这样可以减少交换操作的时间。这种方法针对冒泡排序中需要频繁交换数组数字而改进。以此类推。。。代码: 1 void selectionSort(myDataType *ary,int len) 2 { 3 int i,j; 4 int mymin; //记录最小值下标 5 for (i=0;i ary[j])11 {12 mymin = j;13 14 ... 阅读全文
摘要:
冒泡排序应该是最常用的排序方法,我接触的第一个排序算法就是冒泡,老师也经常那这个做例子。冒泡排序是一种交换排序,基本思想:通过两两比较相邻的记录,若反序则交换,知道没有反序的记录为止。例子:依次类推。这里可以看出,每次比较从最后一个开始,向前比较,若反序则交换;每次都保证了是两两相邻的记录比较。冒泡排序的代码: 1 void bubble_sort (myDataType *ary,int len) 2 { 3 int i,j; 4 for (i=0;i=i;j--) 7 { 8 if (ary[j] > ary[j+1]) 9 ... 阅读全文
摘要:
排序是非常基本的一个操作。排序也分许多方法,可能会有人想,为什么不用最一种最快最好的方法而非要搞出那么多方法呢?因为各种方法有各种方法的用处,适用于不同的情况。排序分:内排序 和 外排序内排序:在排序整个过程中,所有的欲排序记录都存放在内存中。外排序:欲排序的个数多,不能同时放置内存,整个排序过程需要在内外存之间多次交换。内排序:在排序过程中,所有元素调到内存中进行的排序,称为内排序。内排序是排序的基础。内排序效率用比较次数来衡量。按所用策略不同,内排序又可分为插入排序、选择排序、交换排序、归并排序及基数排序等几大类。外排序:在数据量大的情况下,只能分块排序,但块与块间不能保证有序。外排序用读 阅读全文
摘要:
之前我们介绍过,在一个工程中我们关心两个问题:(1)工程是否顺利进行(2)整个工程最短时间。之前我们优先关心的是顶点(AOV),同样我们也可以优先关心边(同理有AOE)。(Activity On Edge Network)看看百度百科上解释:AOE网:Activity on edge network若在带权的有向图中,以顶点表示事件,以有向边表示活动,边上的权值表示活动的开销(如该活动持续的时间),则此带权的有向图称为AOE网。 如果用AOE网来表示一项工程,那么,仅仅考虑各个子工程之间的优先关系还不够,更多的是关心整个工程完成的最短时间是多少;哪些活动的延期将会影响整个工程的进度,而加速这些 阅读全文