C语言 - 一维数组

1、数组的概念:

        相同类型n个元素的有限集合(数组类型必须相同,元素个数必须有限个)

数组的定义:

        数组类型 数组名[元素个数];//(元素个数必须为常量)

int a[5]; //定义一个大小为5的数组

2、数组下标的访问:

        数组明[元素下标];(数组的下标可以是常量,可以是变量,可以是表达式)

        数组的元素下标的范围为从0开始,元素 - 1结束,访问之外的元素会产生内存越界

a[0];//数组下标为0的元素

 3、数组的初始化:

        初始化 != 赋值

//全部初始化

int a[5] = {1, 2, 3, 4, 5};//给数组中每个元素都赋上初值

//局部初始化

int a[5] = {1, 3, 4};//只给数组中部分赋上初值,没有给定初值的会被初始化为0
int a[5] = {1,, 4, 5};//下标为1,4的元素初值为0

//零初始化
int a[5] = {0};//全部初值为0

//默认初始化

int a[] = {1, 2, 3, 4, 5};//初始化一个数组大小的数组

 4、数组的储存:

        1、数组的储存空间 = 每个元素所占空间大小 * 元素个数

        2、存放的空间之间是连续性的

        3、存放元素的顺序是有序的

5、数组的操作:

        从终端输入和输出

#include<stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0, len = 0;

    //len 表示数组的长度
    len = sizeof(a) / sizeof(a[0]);//sizeof(a)获取数组a所占内存的大小,
                                   //sizeof(a[0])表示a[0]所占内存的大小   

    //从终端接受数据放入数组
    for(i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }

    //向终端打印数组
    for(i = 0; i < len; i++)
    {
        printf("%d", a[i]);
    }
    

    return 0;
}

 6、数组的常见排序:

        冒泡排序:重复地遍历待排序的数组,比较相邻元素,并在它们的顺序错误时交换它们的

                位置(顺序错误:前面的元素大于后面的元素),最终实现从小到大排序

                算法的实现步骤:             

                        从数组的第一个元素开始,依次比较相邻的两个元素。

                        如果它们的顺序错误(前面的元素大于后面的元素),则交换它们。

                        每一轮遍历后,最大的元素会被“冒泡”到数组的末端。

                        重复上述步骤,直到整个数组有序。

#include<stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0, len = 0, val = 0, j = 0;


    len = sizeof(a) / sizeof(a[0]);

    for(i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }
    
    for(i = 0; i < len -1; i++)
    {
        for(j = 0; j < len - 1-i; j++)
        {   if(a[j] > a[j + 1])
            {
                val = a[j];
                a[j] = a[j + 1];
                a[j + 1] = val;
            }
        }
    }

    for(i = 0; i < len; i++)
    {
        printf("%d", a[i]);
    }
    

    return 0;
}

        选择排序:通过每次遍历数组,找出最小或最大的元素,并将其与当前未排序部分的第一个

                         元素交换,直到数组完全有序

                算法实现:

                                从数组的第一个元素开始,找到最小的元素。

                                将找到的最小元素与当前遍历到的元素交换。

                                重复以上过程,直到数组有序。

#include<stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0, len = 0, min = 0, j = 0, val = 0;


    len = sizeof(a) / sizeof(a[0]);

    for(i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }
    
    for(i = 0; i < len - 1; i++)
    {
        min = i;
        for(j = i + 1; j < len; j++)
        {
            if(a[min] > a[j])
            {
                min = j;
            }
        }
        if(min != i)
        {
            val = a[i];
            a[i] = a[min];
            a[min] = val;
        }
    }

    for(i = 0; i < len; i++)
    {
        printf("%d", a[i]);
    }
    

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落幕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值