浅谈c语言排序问题(冒泡排序)

来源:互联网 发布:淘宝售后高 编辑:程序博客网 时间:2024/05/18 06:20

排序问题是初学者在学到数组时遇到的相对较难理解的问题,现在我把我的学习心得和大家分享一下。
先来看一下这样一个问题:给你一个整型数组,要求给数组里面的整形数据按从大到小的顺序输出。
程序如下:

#include <stdio.h>int main(){    int a[10];                                          //为了叙述简单,只取10个,能叙述原理即可//    int i,j,temp,len;    len=sizeof(a)/sizeof(a[0]);                         //计算数组一共有多少元素//    printf("please input 10 number\n");    for(i=0;i<10;i++)    {        scanf("%d",&a[i]);                               //用for循环输入保存10个整型数据//    }    for(i=0;i<len-1;i++)                                 //为外面的大循环,因最后一次无需比较,所以为len-1//    {        for(j=0;j<len-i-1;j++)        //为里面的小循环,因后面的数据在前面的大循环中已经比较过了,所以为len-i-1//                       {            if(a[j]<a[j+1])            {                temp=a[j];                a[j]=a[j+1];                a[j+1]=temp;         //如果前面的数比后面的数大,则调换两数的位置//            }        }        for(j=0;j<10;j++)        {            printf("%d",a[i]);       //为了能看清每一步的运行结果,输出每一个小循环得到的结果//        }    }    printf("\n");    return 0;}

假设输入的是:0,1,2,3,4,5,6,7,8,9,则运行结果如下:

分析:可能最难理解的就是13行到23行,下面我们着重分析一下这几行。
for(i=0;i

原创粉丝点击