06 - 数组

数组

一维数组定义的三种方式:

  1. 数据类型 数组名[ 数组长度 ];
  2. 数据类型 数组名[ 数组长度 ] = { 值1,值2 …};
  3. 数据类型 数组名[ ] = { 值1,值2 …};

总结1:数组名的命名规范与变量名命名规范一致,不要和变量重名

总结2:数组中下标是从0开始索引

1.数据类型 数组名[ 数组长度 ];

	//数据类型 数组名[元素个数];
	int score[10];

	//利用下标赋值
	score[0] = 100;
	score[1] = 99;
	score[2] = 85;

	//利用下标输出
	pintf(%d\n”, score[0]);
	pintf(%d\n”, score[1]);
	pintf(%d\n”, score[2]);

2.数据类型 数组名[ 数组长度 ] = { 值1,值2 …};

//第二种定义方式
	//数据类型 数组名[元素个数] =  {值1,值2 ,值3 ...};
	//如果{}内不足10个数据,剩余数据用0补全
	int score2[10] = { 100, 90,80,70,60,50,40,30,20,10 };
	
	//逐个输出
pintf(%d\n”, score2[1]);
pintf(%d\n”, score2[0]);

	//一个一个输出太麻烦,因此可以利用循环进行输出
	for (int i = 0; i < 10; i++)
	{
		pintf(%d\n”, score2[i]);

	}

3.数据类型 数组名[ ] = { 值1,值2 …};

	//定义方式3
	//数据类型 数组名[] =  {值1,值2 ,值3 ...};
	int score3[] = { 100,90,80,70,60,50,40,30,20,10 };

	for (int i = 0; i < 10; i++)
	{
		pintf(%d\n”, score3[i]);
	}

	system("pause");

	return 0;
}

数组传参

  1. sizeof(数组名),计算整个数组的大小,sizeof内部单独放一个数组名,数组名表示整个数组。

  2. &数组名,取出的是数组的地址。&数组名,数组名表示整个数组。

    除此1,2两种情况之外,所有的数组名都表示数组首元素的地址。

    当数组传参的时候,实际上只是把数组的首元素的地址传递过去了。

排序算法

1.冒泡排序算法

冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻元素可以交换,就表明完成了排序。

	for (int i = 0; i < n-1; i++)
	{
		int flag = 0;
		for (int j = 0; j < n - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
				flag = 1;
			}
		}
		if (flag == 0)//flag没变就是后面已经是顺序排列了
		{
			break;
		}
	}

img

2.选择排序算法

  1. 假设有一个数是最大的,和每个数比较,找到最大的数

  2. 第一个数和最大的数进行交换

  3. 重复1 2

	for (int i = 0; i < n ; i++)
	{
		int max = i;
		for (int j = i+1; j < n ; j++)
		{
			if (arr[j] > arr[max])
			{
				max = j;//找到最大数的下标,和第一个数进行交换
			}
		}
		if (max != 0)
		{
			int temp = arr[max];
			arr[max] = arr[i];
			arr[i] = temp;
		}
	}

img

3.洗牌算法

3.1随机数

//包含头文件
#include<stdlib.h>
#include<time.h>//引入时间戳

srand((unsigned)time(NULL));

//产生随机数的范围
//rand()%(max-min+1)+min
int ret = rand() % i;

3.2洗牌算法

srand((unsigned)time(NULL));
int a[17];
int len = sizeof(a) / sizeof(a[0]);

for (int i = 0; i < len; i++)
{
    a[i] = i + 1;;
}

for (int i = len; i > 0; i--)
{
    //在0 ~ i-1 直接产生一个随机数
    int ret = rand() % i;
    //和最后一个数字做交换
    int temp = a[ret];
    a[ret] = a[i];
    a[i] = temp;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值