C语言学习之:(7)一维数组:定义方式、空间占用、数组逆置算法、冒泡排序法

本文介绍了C语言和Python中数组的定义方式,包括指定大小、自适应分配、初始化及未初始化的情况。讨论了数组的空间占用,并展示了通过scanf初始化数组的方法。接着详细阐述了数组的逆置和冒泡排序算法,提供了C语言和Python的实现代码。内容涵盖了数组的基本操作和排序技巧,适合初学者和进阶者学习。
摘要由CSDN通过智能技术生成

1. 数组的定义方式

方式1:

  • 类型
  • 名称
  • 空间大小(一共十个单元,每个单元都是 int 类型,所以每个单元是 4 字节)
  • 具体的值
    在这里插入图片描述

方式2:

int arr[] = {1,2,3,4,5}
  • 不给其指定分配空间的大小,自适应空间分配

方式3:

int arr[10] = {1,2,3,4,5};
  • 分配的空间大于输入的值的个数,这个时候,默认所有的没有赋值的位置都是 0

方式4:

int arr[10];
  • 不进行初始化,结果是系统自动分配的数值 -858993460
    在这里插入图片描述

2. 数组的空间占用

在这里插入图片描述

  • int 类型定义的数组,每个单元的大小为 4 个字节;三个数据一共 12 个字节
  • 可以用 %p 和 & 来查看地址的编号,可以看到确实是每个单元占四个字节,这里的三个地址值,是每个单元的 首地址值

3. 通过 scanf 来初始化数组

在这里插入图片描述

4. 数组逆置

C语言解法

在这里插入图片描述

python解法

在这里插入图片描述

5. 冒泡排序法

  • 循环外层控制行,内层控制列
  • 一共有 10 个数据,那么只需要对整个数组做 9 次冒泡
  • 第一次冒泡只需要在不同数据之间比较 9 次,第二次冒泡比较 8 次,每次冒泡,比较大小的次数递减。

C语言解法

#include<stdio.h>
#define SIZE 10
void main()
{
	int arr[SIZE] = { 1,7,8,5,6,9,2,3,4,10 };
	int len = SIZE;
	int temp = 0;
	for (int i = 0; i < SIZE-1; i++)
	{
		for (int j = 0; j < len-1; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
		len--;
	}

	for (int l = 0; l < SIZE; l++)
	{
		printf("%d", arr[l]);
	}
}

python解法:

在这里插入图片描述

a = [1,3,2,5,4,6,7,8,10,9]

length = len(a)
for i in range(length-1):
    for j in range(length-1):
        if a[j] > a[j+1]:
            temp = a[j]
            a[j] = a[j+1]
            a[j+1] = temp
    length -= 1

print(a)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暖仔会飞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值