c++二维数组排序_C语言系列之数组

本文介绍了二维数组的概念,将其视为由多个一维数组组成。接着详细讲解了一维数组的定义和使用,并提供了排序算法的原理说明,通过比较相邻元素进行交换,递归地进行排序,直到所有元素排列正确。
摘要由CSDN通过智能技术生成

数组也是一种数据类型,里面可以放各种相同类型的数据,就像是一个大仓库,里面存放的数据称为数组元素。数组可以分为一维数组和多维数组,多维数组可以看成是多个一维数组构成,比如一个三行两列的二维数组a[3][2],可以看作是三个一维数组构成,分别是a[0];a[1];a[2];

一维数组的定义和使用:

int a[5] = {0,1,2,3,4,5};printf("%d\n",a[2]);

上面定义了一个int型的数组,这种定义方式是既给了数组的空间大小,也给了足够数量的值。因为在数组中元素是按照写入时的顺序存储的,且每个元素都有自己的下标,从‘0’开始,所以访问数组元素一定要给下标,如上所示a[2]表示的元素是上面数组中的“2”。需要注意的是数组访问时只能以元素的形式访问,意味着一定要加下标。下面还有两种常用的数组定义方式:

int b[] = {7,6,2};//第一种int c[9] = {4,5,9};//第二种
b数组没有声明元素个数(也就是给多少存储空间),但是已经给它赋值了,那么这个数组的大小就只能依赖于赋值。数组c给定了元素个数,但是在赋值时并没有给足够的数据,那么剩下的空间系统会自动使用0补齐,当然在打印的时候不会把系统补的0打印出来。下面示范错误的定义和使用方式:
int d;//错误写法int e[];//错误写法int f = {7,8,9};//错误写法,数组名后面的[]一定不可省略,这个[]是数组的标志               //而且[]中的数值一定要是常量,或者空着不写//正确写法,如下int g[5];g[5] = {9,5,3,7,2};
一维数组的使用,完成冒泡排序冒泡排序算法如下:(升序)
  1.  比较相邻的元素,如果第一个比第二个小就交换。

  2.  依次往后比较,直到最后一个元素完成比较。

  3.  针对所有的元素重复以上的步骤,除了已经完成排序的数列,(元素的个数 - 1)减去(已经完成的排序次数),这样计算是因为如果一个数组有5个元素,那么第一次排序的时候只需要比较4次就可以确定一个元素的位置是正确的;那么下一次排序的时候就只需要对剩下的4个元素排序,比较3次。下面用n表示元素的个数,i表示需要排序的次数,j表示每一次排序需要比较的次数。

  4.  持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

#include int main(){        int a[] = {7,5,9,12,0,63,25};        int i,n,j,k;        n = sizeof(a) / sizeof(int);        for (i=0; i-1; i++)        {                for(j=0; j-1-i; j++)                {                        if(a[j] < a[j+1])                        {                                k = a[j];                                a[j] = a[j+1];                                a[j+1] = k;                                printf("a[j]%d,a[j+1]%d,k=%d\n",a[j],a[j+1],k);                        }                }        }        for(i=0; i                printf("%5d",a[i]);                printf("\n");        return 0;}

1664b1c51c4fd4e464af4af5d0720eef.png

首先使用数组大小除以数组类型求出有多少元素,然后使用for循环完成排序,最后使用for循环将排序完成的数组输出。这段时间一直在学习C语言,前几天没有写学习笔记是因为感觉自己学的比较杂,不能形成自己的知识框架,所以一直没有记录。本来今天是打算把数组相关的知识都写完的,但是因为开始写的时间有点晚了,所以写不完了,剩下的明天补上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值