数组基础知识二

特别说明

一维数组的定义(对数组空间进行清理,置0,不会产生随机值):数组在使用前要先定义;告诉编译器数组元素的类型;编译器会给这个数组预先分配连续的存储空间;定义的格式为:元素类型名 数组名[数组长度]。

1、一维数组的遍历:在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来使用for循环依次遍历数组中的元素。

代码示例

复制代码
#include <stdio.h>

int main()
{
	int x[5] = {1,2,3,4,5};
	int i = 0;
	for(i=0;i<5;i++)
	{
		printf("x[%d]:%d\n",i,x[i]);
	}
	return 0;
}

例题1:输入n(n<=10)及n个整数,将这组整数逆置并输出。

复制代码
#include <stdio.h>

int main()
{
	int a[10];
	int n;
	int i = 0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	for(i=0;i<n/2;i++)
	{
		int t;
		t=a[i];
		a[i]=a[n-1-i];
		a[n-1-i]=t;
	}
	for(i=0;i<n;i++)
		printf("%d",a[i]);
	return 0;
}

注意:输入的时候以回车作为结束

2、一维数组的最值:在操作时,经常需要获取数组中元素的最值。

例题2:输入n(n<=10)及n个整数,输出最大整数及其位序。

复制代码
#include <stdio.h>

int main()
{
	int n,maxn,maxk;
	int a[10];
	int i;
	
	scanf("%d",&n);
	maxn = 0;
	maxk = 0;
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
		
		if(a[i]>maxn)
		{
			maxn = a[i];
			maxk = k;
		}
	}
	printf("最大整数为:%d 位序为:%d\n",maxn,maxk);
	return 0;
}

**3、一维数组的排序------选择排序:**选择排序是通过每一趟排序过程中从待排序的记录中选择最大(小)的元素,将其依次放在数组的最前(后)端,来实现数组的排序。

复制代码
#include <stdio.h>

int main()
{
	int x[5] = {9,8,3,5,2};
	int i,j,min,temp;
	
	for(i=0;i<5-1;i++) //循环轮数是确定的 
	{
		min = i; //循环的开始 
		for(j=i+1;j<5;j++) //循环找出最小值 
		{
			if(x[j]<x[min])
			  min = j; 
		}
		if(min!=i)
		{
			temp = x[i];
			x[i] = x[min];
			x[min] = temp;
		}
	}
	for(i=0;i<5;i++)
	{
		printf("%d",x[i]);
	}
	return 0;
}

4、一维数组的排序------冒泡排序:在冒泡排序过程中,不断地比较数组中相邻地两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升地原理相似。

复制代码
#include <stdio.h>

int main()
{
	int x[5] = {9,8,3,5,2};
	int i=0,j=0,temp=0;
	
	for(i=0;i<5-1;i++)
	{
		for(j=0;j<5-1-i;j++)
		{
			if(x[j]>x[j+1])
			{
				temp = x[j];
				x[j] = x[j+1];
				x[j+1] = temp;
			}
		}
	} 
	for(i=0;i<5;i++)
	{
		printf("%d ",x[i]);
	}
	return 0;
}

5、一维数组地排序------插入排序:插入排序就是每一步将一个待排序元素插入到已经排序地元素中的适当位置,直到全部插入完毕。

复制代码
#include <stdio.h>

int main()
{
	int x[5] = {9,8,3,5,2};
	int i=1,j=0,temp=0;
	
	for(i=1;i<5;i++)
	{
		temp = x[i];
		j = i;
		while(j>0&&x[j-1]>temp)
		{
			x[j] = x[j-1];
			j--;
		}
		x[j] = temp;
	}
	for(j=0;j<5;j++)
	{
		printf("%d ",x[j]);
	}
	return 0;
}
相关推荐
wangwangmoon_light2 分钟前
1.10 数据结构之图
数据结构
艾莉丝努力练剑7 分钟前
【优选算法必刷100题】第031~32题(前缀和算法):连续数组、矩阵区域和
大数据·人工智能·线性代数·算法·矩阵·二维前缀和
醉颜凉8 分钟前
环形房屋如何 “安全劫舍”?动态规划解题逻辑与技巧
c语言·算法·动态规划
大雨淅淅12 分钟前
一文搞懂动态规划:从入门到精通
算法·动态规划
不去幼儿园14 分钟前
【启发式算法】灰狼优化算法(Grey Wolf Optimizer, GWO)详细介绍(Python)
人工智能·python·算法·机器学习·启发式算法
随意起个昵称15 分钟前
【二分】洛谷P2920,P2985做题小记
c++·算法
没书读了21 分钟前
计算机组成原理-考前记忆清单
线性代数·算法
Hcoco_me1 小时前
大模型面试题5:矩阵(M*M)特征值分解的步骤
算法·机器学习·矩阵
非著名架构师1 小时前
极端天气下的供应链韧性:制造企业如何构建气象风险防御体系
大数据·人工智能·算法·制造·疾风气象大模型·风光功率预测
星轨初途2 小时前
数据结构排序算法详解(2)——选择排序(附动图)
c语言·数据结构·经验分享·笔记·b树·算法·排序算法