【03】逆序数组

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、逆序函数是什么?

二、逆序函数原码

1.直接逆序

2.创建临时数组逆序

三、结言


💥一、逆序函数是什么?

示例:输入1 4 7 9 3

输出:3 9 7 4 1

通俗来说就是将数组一行数据倒着打印。

✨二、逆序函数原码

🥳1.直接逆序

思路:

1.利用scanf与for循环获取多组数据;

2.用left与right两个变量进行左右交换,交换完左边向右靠近,右边向左边靠近,继续交换,直到 left>=right为止;

图示如下:

复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void reverse()
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	printf("请输入你要输入数的个数:");
	scanf("%d", &j);
	int arr[] = { 0 };//注意这里数组没有确定个数

	for (i = 0; i < j; i++)
	{
		scanf("%d", &arr[i]);
	}

	int left = 0;
	int right = j-1;
	while (left <= right)//利用左右下标逐渐向中间靠近
	{
		tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
	for(i = 0;i <=j-1;i++)
	{ 
		printf("%d\n",arr[i]);
	}


}
int main()
{
	reverse();
	return 0;
}

由于上述代码利用数组存储个数时没有确定数组个数就会导致如下情况:

正确做法:

int arr[10] = {0}//允许输入十个数以内的逆序,也可换成100或者其他

修改后代码如下:

复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void reverse()
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	printf("请输入你要输入数的个数(<10):");
	scanf("%d", &j);
	int arr[10] = { 0 };


	for (i = 0; i < j; i++)
	{
		scanf("%d", &arr[i]);
	}

	int left = 0;
	int right = j-1;
	while (left <= right)//利用左右下标逐渐向中间靠近
	{
		tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
	for(i = 0;i <=j-1;i++)
	{ 
		printf("%d\n",arr[i]);
	}


}
int main()
{
	reverse();
	return 0;
}

🥳🥳2.创建临时数组逆序

思路:

将数组的数从后往前放入到临时创建的数组中

复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void reverse()
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	printf("请输入你要输入数的个数(<10):");
	scanf("%d", &j);
	int arr[10] = { 0 };


	for (i = 0; i < j; i++)
	{
		scanf("%d", &arr[i]);
	}


		//直接逆序
		//tmp = arr[j];//先将最后一个数存储起来
		//for (i = j; i > 0; i--)
		//{
		//	arr[j] = arr[j - 1];//循环逆转
		//}
		//arr[0] = tmp;//将第一个储存最后一个数完成逆转

	//创建临时数组实现逆序
	int tem[10] = { 0 };//创建临时数组
	for (i = 0; i < j; i++)
	{
		tem[i] = arr[j-i- 1];//将arr数组后面的数存储到tem数组前面
	}


	for(i = 0;i <=j-1;i++)//打印逆序后的数组
	{ 
		printf("%d\n",arr[i]);
	}


}
int main()
{
	reverse();
	return 0;
}

🎉三、结言

以上就是C语言实现逆序数组完整实现啦~🌹🌹🌹土土这里用了两种方法一种是直接发利用左右两个指针来遍历,另一种是创建临时数组来将原来的数组中的数从后往前放置,两种方法各有优缺点哦~如果有什么问题,欢迎打在评论区或者私法给我哦~💖💖

相关推荐
qystca1 小时前
蓝桥云客---九宫幻方
算法·深度优先·图论
明月清了个风1 小时前
数据结构与算法学习笔记----贪心区间问题
笔记·学习·算法·贪心算法
努力毕业的小土博^_^1 小时前
【EI/Scopus双检索】2025年4月光电信息、传感云、边缘计算、光学成像、物联网、智慧城市、新材料国际学术盛宴来袭!
人工智能·神经网络·物联网·算法·智慧城市·边缘计算
神里流~霜灭2 小时前
数据结构:二叉树(三)·(重点)
c语言·数据结构·c++·算法·二叉树·红黑树·完全二叉树
网安秘谈2 小时前
非对称加密技术深度解析:从数学基础到工程实践
算法
luckyme_2 小时前
leetcode-代码随想录-哈希表-有效的字母异位词
算法·leetcode·散列表
zh_xuan2 小时前
LeeCode 57. 插入区间
c语言·开发语言·数据结构·算法
莫有杯子的龙潭峡谷2 小时前
4.4 代码随想录第三十五天打卡
c++·算法
luckyme_2 小时前
leetcode 代码随想录 数组-区间和
c++·算法·leetcode
好好学习^按时吃饭2 小时前
蓝桥杯2024年第十五届省赛真题-R 格式
算法·蓝桥杯