加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

C语言之起泡排序法概括

发布时间:2021-12-10 16:42:33 所属栏目:PHP教程 来源:互联网
导读:代码学习过程中总结一下起泡排序法。 起泡排序法的基本思路:每次将相邻的两个数进行比较,将小的调到前头。 若有6个数:9,8,5,4,2,0 第一次先将最前面的两个数8和9对调,第二次将第二个和第三个数(9和5对调)如此一共进行五次,得到8,5,4,2,0,9的
代码学习过程中总结一下起泡排序法。
 
起泡排序法的基本思路:每次将相邻的两个数进行比较,将小的调到前头。
若有6个数:9,8,5,4,2,0
第一次先将最前面的两个数8和9对调,第二次将第二个和第三个数(9和5对调)……如此一共进行五次,得到8,5,4,2,0,9的顺序。
 
可以看到,大数已沉底,而小数上升。最小的数0已向上浮起一个位置,经过一次比较已经得到最大的数9。
 
 
 
然后进行第二趟比较,对余下的五个数进行新一次的比较。(8,5,4,2,0)进行新一轮的比较,以便使第二大的数沉底。按以上方法进行第二次比较。得到第二大的数8。
 
按此规律,可以推知,对六个数要比较五次,才能使六个数按大小顺序排列。
第一趟要比较5次,第二趟比较4次……第五趟比较1次。
规律:如果有n个数,则要进行n-1次比较。在第一趟比较中药进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。
我将起泡排序写成函数
 
#include<stdio.h>
/*==========================================================
 *函数名称:main()
 *功    能:主函数
 *入口参数:
 *出口参数:
 *说    明:使用起泡法将给定的数组排序
 *==========================================================*/
void main()
{
    void qipao_paixu(int num[]);
    int a[10]={655,23,56,2345,3897,36,478,31,90,208};
    int i;
    printf("原始序列:");
    for(i=0;i<10;i++)
        printf("%5d",a[i]);
    printf("n");
    printf("起泡法排序n");
    qipao_paixu(a);
    printf("排序后的序列:");
    for(i=0;i<10;i++)
        printf("%5d",a[i]);
 
}
/*==========================================================
 *函数名称:qipao_paixu()
 *功    能:起泡排序
 *入口参数:
 *出口参数:
 *说    明:对数组中的十个元素进行起泡排序
 *==========================================================*/
void qipao_paixu(int num[])
{
    int i,j,temp;
    for(j=0;j<9;j++)//控制j趟比较
        for(i=0;i<9-j;i++)//第j趟中,控制n-j次两两比较
        {
            if(num[i]>num[i+1])//判断序列中两两相邻数字大小
            {
                temp=num[i];//小数向前放,大数沉底
                num[i]=num[i+1];
                num[i+1]=temp;
            }
 
        }
 
}
 
经codeblock编译运行
 
 
 
新手小白,还望多指正,以后常总结交流。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读