10_28..记录最近学习数组的心得


前言

今天就先不分享OJ题目了,因为最近C语言理论课上深度学习了数组,所以有一些学习感悟与心得与大家分享。
有关数组的基本知识就不多加介绍了,在这里重点分享冒泡排序和多元数组两个部分


一、冒泡排序

1.作用

首先来看代码与运行结果:

#include<stdio.h>
int main(){
    int arr[9],i = 0;
    while(i<=8){
        int a = 0;
        scanf("%d",&a);
        arr[i] = a;
        i++;
    }
    int j = 0;
    for(i=1;i<9;i++) //冒泡排序算法
        for(j=0;j<9-i;j++)
            if(arr[j]>arr[j+1])
            {
                int t = 0;
                t=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=t;
            }
    i = 0;
    while(i<=8){
        printf("%d\n",arr[i]);
        i++;
    }
    return 0;
    }

在这里插入图片描述
通过冒泡排序,可以将数组中的数字进行从小到大(从大到小)的排序

2.原理

这里本来准备以我自己的口吻来描述,但是CSDN上的相关博客介绍太完善了(毕竟是被华为云开发者收录的),还有动画!所以我把链接留在这里。
小明的c++笔记本语言——冒泡排序
冒泡排序最重要的就是下面的两个for循环。

 for(i=1;i<9;i++) //冒泡排序算法
        for(j=0;j<9-i;j++)
            if(arr[j]>arr[j+1])
            {
                int t = 0;
                t=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=t;
            }

姑且把i++的称为循环1;j++的称为循环2,例如从小到大排,则:
每经过一次循环2,其对象的两个数便会小在左,大在右;
每经历一次循环1,倒数第i个数就一定是大于其左边的所有数;
最终,arr[]便会变成我们想要的样子。
(我的表述可能有些不清晰,可以去上面的链接里看看,有动画演示)

二、N维数组

参考博客:

Half-up:多维数组
Cainv89:多维数组(Multi-dimensional Array)

我的理解

一维数组就像一维坐标系,二维数组就像平面直角坐标系,三维数组则是空间直角坐标系。
在这里插入图片描述
一维数组:arr[列数]
二维数组:arr[行数][列数]
三维数组:arr[面数[行数][列数]
定义二维数组时:可省略行而不可省略列
代码如下(示例):
N维数组的应用有很多,但很多都与指针有关。目前我对指针了解较少,将会在以后继续分享

3.补充

查找资料时我也发现了其他众多常用的排序方法,感兴趣的可以了解下六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值