c语言冒泡排序法的简单程序

c语言冒泡排序法的简单程序

ID:14010035

大小:63.00 KB

页数:11页

时间:2018-07-25

c语言冒泡排序法的简单程序_第1页
c语言冒泡排序法的简单程序_第2页
c语言冒泡排序法的简单程序_第3页
c语言冒泡排序法的简单程序_第4页
c语言冒泡排序法的简单程序_第5页
资源描述:

《c语言冒泡排序法的简单程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、求一个C语言冒泡排序法的简单程序悬赏分:50-解决时间:2007-9-411:16我不明白怎么写随便给我个就行谢谢了提问者:redangel0002-助理二级最佳答案main(){inti,j,temp;inta[10];for(i=0;i<10;i++)scanf("%d,",&a[i]);for(j=0;j<=9;j++){for(i=0;i<10-j;i++)if(a[i]>a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}}for(i=1;i<11;i++)printf("%5d,",a[i

2、]);printf("");}--------------冒泡算法冒泡排序的算法分析与改进交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。冒泡排序1、排序方法将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。(1)初始R

3、[1..n]为无序区。(2)第一趟扫描从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key

4、n-1趟扫描可得到有序区R[1..n]注意:第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R上,结果是R[1..i]变为新的有序区。2、冒泡排序过程示例对关键字序列为4938659776132749的文件进行冒泡排序的过程3、排序算法(1)分析因为每一趟排序都使有序区增加了一个气泡,在经过n-1趟排序之后,有序区中就有n-1个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序过程至多需要进行n-1趟排序。

5、若在某一趟排序中未发现气泡位置的交换,则说明待排序的无序区中所有气泡均满足轻者在上,重者在下的原则,因此,冒泡排序过程可在此趟排序后终止。为此,在下面给出的算法中,引入一个布尔量exchange,在每趟排序开始前,先将其置为FALSE。若排序过程中发生了交换,则将其置为TRUE。各趟排序结束时检查exchange,若未曾发生过交换则终止算法,不再进行下一趟排序。(2)具体算法voidBubbleSort(SeqListR){//R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序inti,j;Booleanexchange;

6、//交换标志for(i=1;i=i;j--)//对当前无序区R[i..n]自下向上扫描if(R[j+1].key

7、)}//BubbleSort4、算法分析(1)算法的最好时间复杂度若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值:Cmin=n-1Mmin=0。冒泡排序最好的时间复杂度为O(n)。(2)算法的最坏时间复杂度若初始文件是反序的,需要进行n-1趟排序。每趟排序要进行n-i次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:Cmax=n(n-1)/2=O(n2)Mmax=3n(n-1)/2=O(n2)冒泡排序的最坏时间

8、复杂度为O(n2)。(3)算法的平均时间复杂度为O(n2)虽然冒泡排序不一定要进行n-1趟,但由于它的记录移动次数较多,故平均时间性能比直接插入排序要差得多。(4)算法稳定性冒泡排序是就地排序,且它是稳定的。5、算法改进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。