C语言_数组与排序
1、数组定义
数组:一组有序数据的集合。
//定义一个长度为5的整形数组
//数组里存储的是5个int类型的变量
int arr[5];
int //数组的数据类型
arr //数组的名字
5 //数组的长度
2、数组下标
数组的下标从0开始,到n-1结束(n是数组长度)。
int arr[5];
0
1
2
3
4
3、数组元素
数组里存储的每一个变量都称为数组的一个元素。
int arr[5];
arr[0] = 5;
arr[1]
arr[2]
arr[3]
arr[4]
4、数组赋值
1)初始化
int arr[5];
//未初始化的数组,每个元素的值默认是随机值;
int arr[5] = {1,2,3,4,5}; //完全初始化
int arr[5] = {1,2,3}; //部分初始化
//部分初始化中,未初始化的元素默认值是0;
int arr[] = {2,3,4,5,6}; //完全初始化的一种
//数组的长度是初始化中元素的个数;
int arr[5] = {};
//数组中的每个元素值都为0;
int arr[]; //错误的定义——未指明数组长度
int arr[n]; //错误的定义——定义数组必须指明长度,不可以在[]里写变量。
int n;
scanf(“%d”,&n);
int arr[n];
编译:静态的检查语法错误
运行:动态的检查逻辑错误
//数组的长度是在编译阶段分配的;
//scanf输入是在运行阶段进行的;
2)赋值
//数组的赋值需要对每个元素分别赋值;
int arr[5];
arr[0] = 3;
arr[1] = 4;
arr[2] = 5;
arr[3] = 6;
arr[4] = 7;
arr[5] = {1,2,3,4,5}; //错误的赋值
定义一个长度为6的整型数组,通过键盘输入分别给数组每个元素赋值,求所有元素的和,并输出。
5、排序
1)冒泡排序
排序规则(升序):数组里相邻元素依次两两比较,如果后面元素值比前面元素值小,则交换两元素值;比较结束,最大的元素值会沉底,一轮排序结束。
后续每一轮排序规则都按第一轮排序规则排,但是已经排好序的元素不再参与排序。
//长度为n的数组,只需要排序n-1轮
4 5 8 6 3
4 5 6 3 8 一轮排序结果
4 5 3 6 8 二轮排序结果
4 3 5 6 8 三轮排序结果
3 4 5 6 8 四轮排序结果
3 4 5 6 8 五轮排序结果
冒泡排序DEMO
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
int arr[5] = {4, 5, 8, 6, 3};
int temp;
//升序排列
//外层循环控制排序的轮数
for (int i = 0; i < 4; i++)
{
//内层循环控制每一轮的排序结果
for (int j = 0; j < 5-i-1; j++)
{
if (arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
for (int k = 0; k < 5; k++)
{
printf("%d ",arr[k]);
}
printf("\n");
}
return 0;
}

浙公网安备 33010602011771号