对于C语言中冒泡排序算法分层次学习

摘要:冒泡排序算法是C语言的重点和难点,不少学习者常常因为冒泡排序算法的难学而对C语言的学习望而却步。该文细致研究冒泡排序算法,细C语言中冒泡排序算法的分层次学习相关范文由写论文的好帮手www.shuoshilunwen.com提供,转载请保留.化分层,阶梯式前进,化难为易。
关键词:C语言;算法;排序;冒泡;分层次
1009-3044(2013)35-7987-03

1 冒泡排序算法

冒泡排序算法是一种基于交换的排序算法。这种算法的基本原理是:将等待排序的元素当作是竖着排列的一系列大小不同的“气泡”,较小的“气泡”较轻,从而要向上浮。冒泡排序算法通过对待排列的“气泡”序列进行若干遍处理,逐步排好所有“气泡”。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确,如果发现两个相邻元素的顺序不正确,即“轻”的元素在下面,就交换位置。易见,一遍处理之后,“最轻”的元素就浮到了最高位置。二遍处理之后,“次轻”的元素就浮到了次高位置。在二遍处理时,由于最高位置上的元素已经是“ 最轻”元素了,所以不必检查最高位置上的元素。一般来说,第n 遍处理时,不必检查第n高位置以上的元素,因为经过前面n- 1遍的处理,它们已正确地排好序了。

2 冒泡排序算法的三个层次

层次一:对数组a按要求进行一遍处理。自底向上(从a[0]到a[9]),依次遍历这个序列,检查相邻的两个元素的顺序是否正确,如果发现相邻的两个元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。
策略过程演示:
1.png> 完整代码:
#include
main()
{int a[10]={2,11,1,5,6,12,4,3,9,20};
int j,temp;
printf(“the origin array is:\n”);
for(j=0;j<10;j++)
printf(“%4d”,a[j]);
printf(“\n”);
//核心代码:
for(j=0;j<9;j++)
if(a[j]printf(“the sorted array is:\n”);
for(j=0;j<10;j++)
printf(“%4d”,a[j]);
printf(“\n”);
}
程序运转结果是:
2.png> 小结:数组a[10]={ 2,11,1,5,6,12,4,3,9,20}中的10个元素经过上面的一遍处理后,逐步实现最轻的元素冒到这组数最后的位置,得到数组a的新的排列a[10]={ 11,2,5,6,12,4,3,9,20,1}。
层次二:利用一遍处理的成果,将数组a剩下的待排序的元素{11,2,5,6,12,4,3,9,20},再次利用“层次一”的策略,对数组a按要求进行二遍处理。自底向上(从a[0]到a[8]),依次遍历这个序列,检查相邻的两个元素的顺序是否正确,如果发现相邻的两个元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。
策略过程演示:
3.png> 完整代码:
#include
main()
{int a[10]={ 11,2,5,6,12,4,3,9,20,1};
int j,temp;
printf(“the origin array is:\n”);
for(j=0;j<10;j++)
printf(“%4d”,a[j]);
printf(“\n”);
for(j=0;j<8;j++)
if(a[j]printf(“the sorted array is:\n”);
for(j=0;j<10;j++)
printf(“%4d”,a[j]);
printf(“\n”);
}
程序运转结果:
4.png> 小结:将数组a[10]={ 11,2,5,6,12,4,3,9,20,1}中的10个元素经过“层次一”和“层次二”后得到数组a的新的排列a[10]={11,5,6,12,4,3,9,20,2,1}。可见,这个数组中的次轻数2已经冒到次后的位置(a[8])。
层次三:达成将数组a[10]中的所有的数由大到小排序,可以重复上面的操作,这就是冒泡排序算法。
完整的策略过程演示:
5.png> 完整代码:

4 冒泡排序算法的优点

首先,冒泡排序算法的“编程复杂度”很低,理解了冒泡排序原理之后,很容易写出代码。其次,冒泡排序算法具有“稳定性”,所谓“稳定性”是指原序列中相同元素的相对顺序仍然会保持到排序后的序列中。
当然,当需要排序的数据较多且无序时,冒泡排序算法的时间复杂度大,比较次数多,系统开销大。不过,通过改善冒泡排序算法,可以减少比较的次数,降低算法的时间复杂度。
参考文献:
[1] 李秉璋,李红卫,C语言程序设计与训练[M].大连:大连理工大学出版社,2011.

相关论文

对于程序设计语言中排序算法教学

摘 要:目前排序算法的动态演示多数采用简单的数字输出方式,为了清晰而容易地理解程序设计语言中排序算法的思想,更好地掌握排序算法。本。
浏览量:20459 点赞量:6022

素数C语言中求解素数不足算法结论

源于:论文格式排版www shuoshilunwen com 摘要:该文主要介绍了通过C这种语言来求解素数的问题,首先是列举了素数最为基本的判定算法,其。
浏览量:132838 点赞量:28888

职高分层教学法在职高《C语言程序》中运用

摘 要:本文探讨了职高《C语言程序》教学中用分层教学法来组织课堂教学模式:即在认可每位学生个体认知方式和认知能力差异客观存在的基础。
浏览量:60796 点赞量:14694

论C语言中冒泡排序算法优化

摘 要 排序是计算机程序设计语言中常见的内容,其中冒泡排序一般是以大数往后沉的方式来实现。传统的做C语言中的冒泡排序算法优化论文资。
浏览量:9611 点赞量:3518

教学高职院校C语言教学革新

【摘要】由于C语言课程内容比较抽象,高职学生基础知识比较薄弱,学习自主性较差的近况毕业论文范文,使得许多学生在学习的时候感觉到C语言。
浏览量:105374 点赞量:23001

教学基于培养目标c语言教学和实践

摘要:本文首先从语法、语义和认知境界浅析硕士论文了C语言教学本质,然后根据信息管理与信息系统专业培养目标,结合学生实际具有的基础知。
浏览量:45431 点赞量:11135

教学影响C语言课程教学质量理由与对策

摘要: 目前国内《C语言程序设计》的研究论文大多局限于微观层面的具体教学策略毕业论文,缺少全局性的认识和浅析硕士论文。本文从中观层。
浏览量:47186 点赞量:11754