计算机软件技术基础课程辅导
㈠ 计算机软件技术基础课程设计
一.选择排序
1. 基本思想:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
2. 排序过程:
【示例】:
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 〔38 65 97 76 49 27 49]
第二趟排序后 13 27 〔65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [49 97 65 76]
第五趟排序后 13 27 38 49 49 [97 97 76]
第六趟排序后 13 27 38 49 49 76 [76 97]
第七趟排序后 13 27 38 49 49 76 76 [ 97]
最后排序结果 13 27 38 49 49 76 76 97
3.
void selectionSort(Type* arr,long len)
{
long i=0,j=0;/*iterator value*/
long maxPos;
assertF(arr!=NULL,"In InsertSort sort,arr is NULL\n");
for(i=len-1;i>=1;i--)
{
maxPos=i;
for(j=0;j<i;j++)
if(arr[maxPos]<arr[j])maxPos=j;
if(maxPos!=i)swapArrData(arr,maxPos,i);
}
}
选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.
二.直接插入排序
插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。
直接插入排序
直接插入排序(Straight Insertion Sort):将一个记录插入到排好序的有序表中,从而得到一个新的、记录数增1的有序表。
直接插入排序算法
哨兵(监视哨)有两个作用:一是作为临变量存放R[i](当前要进行比较的关键字)的副本;二是在查找循环中用来监视下标变量j是否越界。
当文件的初始状态不同时,直接插入排序所耗费的时间是有很大差异的。最好情况是文件初态为正序,此时算法的时间复杂度为O(n),最坏情况是文件初态为反序,相应的时间复杂度为O(n2),算法的平均时间复杂度是O(n2)。算法的辅助空间复杂度是O(1),是一个就地排序。
直接插入排序是稳定的排序方法。
三. 冒泡排序
[算法思想]:将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。
[算法]:
void BubbleSort(SeqList R) {
//R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序
int i,j;
Boolean exchange; //交换标志
for(i=1;i<n;i++){ //最多做n-1趟排序
exchange=FALSE; //本趟排序开始前,交换标志应为假
for(j=n-1;j>=i;j--) //对当前无序区R[i..n]自下向上扫描
if(R[j+1].key<R[j].key){//交换记录
R[0]=R[j+1]; //R[0]不是哨兵,仅做暂存单元
R[j+1]=R[j];
R[j]=R[0];
exchange=TRUE; //发生了交换,故将交换标志置为真
}
if(!exchange) return;//本趟排序未发生交换,提前终止算法
} //endfor(外循环)
} //BubbleSort
详细内容,附图:
http://hi..com/_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/2177742ea4a265544ec22621.html
㈡ 河北工业大学计算机软件技术基础(VC)
又是求作业的
㈢ 谁有 计算机软件技术基础 徐士良的 pdf
您好,以下是下载的地方,希望喜欢,谢谢!
㈣ 计算机软件技术基础的视频教程 !!
用“屏幕录像专家.part5.rar”来做,配上声音就可以了。
㈤ 计算机软件技术基础-编程(考试题)
你好,自考真题可以网上看看有没有,一般自考辅导试卷有专门的历次考试试题的。自内考书籍主要容是教材、大纲和辅导书模拟题历次考试真题,可以网上试试,或是有卖那种历次考试真题的试卷的辅导资料的可以,或是模拟试题都是可以的。
㈥ 软件技术基础知识总结
不知不觉中9周的《软件技术基础》 这门课课已经结束了,虽然时间有点短, 但这九个星期的学习中我却受益匪浅, 不仅让我系统的了解了许多计算机软件相关的基础知识和一些常用的系统软件, 还让我有了更科学的方法去分析一些软件方面的问题,这对于我今后的学习和工作都是有很大帮助的。 下面来谈谈我对学习这门课的一点点心得。 首先,我们认识到了计算机对现在社会、生活的影响之重,我们要想灵活的应对以后生活中的各种问题,拥有一个好的计算机技术必不可少的,而要想真的学好计算机技术,我们首先就得对计算机的操作、工作原理和规则等有一个清晰的认识。 如今仅仅掌握计算机语言并不能有效地使用计算机,我们必须掌握数据结构和算法方面的知识才能应对众多复杂的应用课题。刚开始学习数据结构时感觉它很抽象,而且感觉它没多大用处,后来发现不然,我们学习的是一些方法、思维,只有学会了这些我们才能解决一些非数值运算的程序设计方面的问题。 以前我们用过数据库比如Access,但我们只是很基础的应用它们,并不懂它的创建和工作原理,自从学习了这门课,我才初步了解了数据处理和数据管理方面的一些知识,并学到了
SQL语言的一些基础知识,这对我以后更深层次的学习计算机技术打下了一个基础。
虽然这门课程已经结束,我们学到的也是很基础的一部分,但它对我们影响很深,让我们以后学习更简单了。当然我仍会继续学习各种关于计算机技术方面的知识,让自己有一个过硬的技术,去应对各方面的问题
㈦ 计算机软件技术基础-编程(试题)
先定义a,b,c的值;定义一个变量t;让t依次与a,b,c比较,如果相同就停止;不同就一直比较;这样算,平均次数是2次,最坏的是3次这只是一个思路,可以作为参考啊
㈧ 如何学习计算机软件技术基础
这个啊,你平时要多多积累啊~
你现在就应该先看看关于电脑的一些基本知识~
别觉得会操作电脑就行了,如果你有上初中或者上高中的晚辈~
你就向他们借借他们的计算机课本~
那些课本简单易懂~很不错的~
还有,你要学习电脑,一定要喜欢电脑,好这口~
呵呵~好了 ,祝你一切顺利!
㈨ 帮忙介绍一下"计算机软件技术基础"这门课程.详细一点
呼呼,我上学的时候把软件技术基础这门课挂了。刻骨铭心啊!
软件技术基础算是入门导论那种性质的课,没有很深的理论地位,但是可以为你开启一扇通向计算机世界的门。
这门课主要分为三部分,第一部分讲操作系统,主要是让大家了解,计算机的各种软件是如何在硬件平台上工作的。学好这一部分,可以有效帮助你学习后续课程——微机原理,同时也可以帮助你成为一个优秀的软件工程师——毕竟优秀的软件工程师必须对硬件平台和软件系统之间的依赖关系有着清楚的认识。
第二部分讲数据结构与算法分析。所以这一部分最好是在学习了一点C语言之后学习,主要是讲了一些常用的数据结构,以及如何对实际的问题提出解决的方案(算法就是这个意思)的一些思路、思想。由于这是导论,所以也讲不了很深,专门的《数据结构与算法分析》的课程会在后续的学习中开设。
第三部分讲软件工程,没什么意思的东西了,就是概要得讲讲,大家在设计大型的软件时,应该以一种工程管理的方式去控制开发、测试流程。由于暂时大家都没有机会去实践,所以就是听听而已。
这门课程总的来说就是一个导论,学好了,在学后续的课程时就会更加有兴趣和容易一些。但是,毕竟它就是一门导论,导论而已 ^_^ 真要成高手,靠它是不行的。
㈩ 计算机软件技术基础课后答案
是这个吗http://wenku..com/view/85d0dfff89eb172dec63b737.html