美文网首页
C语言——两种数组排序方式

C语言——两种数组排序方式

作者: 凜風 | 来源:发表于2018-08-08 20:41 被阅读0次

    一、直接排序法

    #include<stdio.h>
    int main()
    {
        int data[] = {97,43,21,56,71,33,41,17,28,42,90,88,83};
        int i,j,t;
        for(i = 0;i < sizeof(data) / sizeof(data[0]);i++)
        {//sizeof(数组名)计算总字节长度 / sizeof(一个元素) 一个元素的字节 = 数组中的数目 
            for(j = i;j < sizeof(data) / sizeof(data[0]);j++ )
    //依次取出数组中的元素和此序号及其之后的的元素相比较,也可以写成j=i+1
            {
                if(data[i] < data[j])
    //小数放后 大数放前
                {
                    t = data[i];
                    data[i] = data[j];
                    data[j] = t;
                }
            }
    //结束一次比较并依次输出比较中最大的数
            printf("%d ",data[i]);
        }
        return 0;
    }
    

    二、冒泡排序法

    #include<stdio.h>
    int main()
    {
        int data[] = {97,43,21,56,71,33,41,17,28,42,90,88,83};
        int i,j,t;
        for(i = 0;i < sizeof(data) / sizeof(data[0])-1;i++)
        {//13个数排序,进行12趟比较,不减一也是可以的。
            for(j = 0;j < sizeof(data) / sizeof(data[0])-i;j++ )
            {//这个i不减也可以,看不明白手写推算一个四个数的排序就行了。
                if(data[j] < data[j+1])
                {//交换数值
                    t = data[j];
                    data[j] = data[j+1];
                    data[j+1] = t;
                }
            }
        }
        for(i=0;i<sizeof(data)/sizeof(data[0]);i++)
        {//循环输出
            printf("%d ",data[i]);
        }
        return 0;
    }
    

    注意:printf(“%d ”,data[i]); %d后面有个空格。否则输出数据间没有间隔!

    相关文章

      网友评论

          本文标题:C语言——两种数组排序方式

          本文链接:https://www.haomeiwen.com/subject/schivftx.html