• 数组倒序排列,数组倒置,C语言数组倒序算法详解!


    数组倒置就是将数组元素中的数据倒过来!

    举个例子,比如下面程序:

    #include <stdio.h>
    
    int main(void)
    
    {
    
        int a[5] = {1, 2, 3, 4, 5};
    
        int b[5];  //用来存放倒置后的数据
    
        int i, j;
    
        for (i=0, j=4; i<5, j>=0; ++i, --j)
    
        {
    
            b[i] = a[j];
    
            printf("%d
    ", b[i]);
    
        }
    
        return 0;
    
    }

    ----------------------

    输出结果是:

    5

    4

    3

    2

    1

    ----------------------

    此程序中,for 循环括号中的写法是正确的。之前讲过,for 循环的格式为:

    for (表达式1;表达式2;表达式3)

    这只是一般的形式。以表达式 1 为例,它是一个“整体”,它可以是一个表达式,也可以是多个表达式,如果是多个表达式就用逗号隔开,如程序中那样。但是如果表达式间用分号隔开就不能看成一个“整体”,即只能看成一个表达式了,如上面的“表达式 1;表达式 2;表达式 3”。

    但是上面这个程序还不能称得上完美。程序中,完成相同功能执行的步数越少,算法就越好,效率也就越高。上面这个算法是完全的“复制”,数组有几个元素就执行多少次。其实有更好的算法,只需要上面算法执行步数的一半就能完成任务,即互换思想。

    要完成倒置的功能,只需要第一个元素和最后一个元素交换、第二个元素和倒数第二个元素交换、第三个元素和倒数第三个元素交换……不管数组元素的个数是奇数还是偶数,这个算法都是成立的。如果是偶数那么每个元素都有机会交换;如果是奇数,那么最中间的那个元素就不交换。

    ----------------------

    下面将数组加长,再将这种算法的程序给大家写一下:

    #include <stdio.h>
    
    int main(void)
    
    {
    
        int a[23] = {1,5,66,8,55,9,1,32,5,65,4,8,5,15,64,156,1564,15,1,8,9,7,215};
    
        int i = 0;  //循环变量1, i的值为数组第一个元素的下标
    
        int j = 22;  //循环变量2, j的值为数组最后一个元素的下标
    
        int buf;  //互换时的中间存储变量
    
        for (; i<j; ++i, --j)  /*因为i和j已经初始化过了, 所以表达式1可以省略, 但表达式1后面的分号不能省。*/
    
        {
    
            buf = a[i];
    
            a[i] = a[j];
    
            a[j] = buf;
    
        }
    
        for (i=0; i<23; ++i)
    
        {
    
            printf("%dx20", a[i]);  //x20表示空格
    
        }
    
        printf("
    ");
    
        return 0;
    
    }

    ----------------------

    输出结果是:

    215 7 9 8 1 15 1564 156 64 15 5 8 4 65 5 32 1 9 55 8 66 5 1

    ----------------------


     

    如果你还想更深入的学习以及其他知识,不管你是转行也好,初学也罢,进阶也可~

    【值得关注】我的 编程学习交流俱乐部 !【点击进入】

    C语言入门资料:


     

    C语言必读书籍:


     
  • 相关阅读:
    ios15--综合小例子
    ios ionic 装平台 笔记
    ios14--购物车优化2
    ios13--购物车优化
    ios--plist
    ios12--简易购物车
    ios11--UIButton
    Android Json的使用(2) 使用Jackson解析和生成json
    快速Android开发系列网络篇之Retrofit
    关于XUtils框架细解
  • 原文地址:https://www.cnblogs.com/huya-edu/p/14813374.html
Copyright © 2020-2023  润新知