返回 课程
信奥AC之路-3级
0% 完成
0/0 步骤
-
第一课:数组基础4 主题|小节
-
第二课:数组基础二6 主题|小节
-
第三课:数组基础三6 主题|小节
-
第四课:数组基础四7 主题|小节
-
第五课:数组基础五5 主题|小节
-
第六课:数组用于统计,去重,排序5 主题|小节
-
第七课:冒泡排序6 主题|小节
-
第八课:数组连续性元素6 主题|小节
-
第九课:数组综合一7 主题|小节
-
第十课:字符数组7 主题|小节
-
第十一课:字符数组基础应用5 主题|小节
-
第十二课:字符数组基础应用二6 主题|小节
-
第十三课:字符数组进阶6 主题|小节
-
第十四课:字符串进阶二6 主题|小节
-
第十五课:字符串(STL)9 主题|小节
-
第十六课:字符串基础6 主题|小节
-
第十七课:字符串函数6 主题|小节
-
第十八课:字符串函数二4 主题|小节
-
第十九课:sort函数7 主题|小节
-
第二十课:字符串进阶7 主题|小节
-
第二十一课:字符串进阶二6 主题|小节
-
第二十二课:进制转换--十进制转其他进制5 主题|小节
-
第二十三课:进制转换--其他进制转十进制5 主题|小节
-
第二十四课:二进制,八进制,十六进制转换5 主题|小节
-
第二十五课:数据编码基础6 主题|小节
-
第二十六课:位运算基础6 主题|小节
课 进展
0% 完成
“小朋友们,”我笑着问道,”如果我们想把一个数组里的数字从后往前重新排列,该怎么做呢?这就是今天要学习的第一个知识点——数组逆序!”
5.1.1 数组逆序
题目描述: 给你 n 个整数,将其逆序输出。
输入格式: 第一行一个整数n(3≤n≤100)代表数的个数。第二行 n 个整数(空格隔开)(这些数在 0~10^6 之间)。
输出格式: n 个整数(空格隔开)。
样例输入:
3
1 7 5
样例输出:
5 7 1
代码实现(方法一):
int n, a[110]; // 定义变量和数组
cin >> n; // 输入数组长度
for(int i = 1; i <= n; i++)
cin >> a[i]; // 输入n个整数
for(int i = n; i >= 1; i--)
cout << a[i] << " "; // 从后往前输出数组
代码实现(方法二):
int n, a[110]; // 定义变量和数组
cin >> n; // 输入数组长度
for(int i = 1; i <= n; i++)
cin >> a[i]; // 输入n个整数
int s = 1, e = n; // 定义起始和结束位置
while(s < e){ // 当起始位置小于结束位置时循环
swap(a[s], a[e]); // 交换两端的元素
s++, e--; // 更新起始和结束位置
}
for(int i = 1; i <= n; i++)
cout << a[i] << " "; // 输出逆序后的数组
代码实现(方法三):
int n, a[110]; // 定义变量和数组
cin >> n; // 输入数组长度
for(int i = 1; i <= n; i++)
cin >> a[i]; // 输入n个整数
for(int i = 1; i <= n/2; i++){
swap(a[i], a[n+1-i]); // 交换对称位置的元素
}
for(int i = 1; i <= n; i++)
cout << a[i] << " "; // 输出逆序后的数组
算法解析:
方法一:
- 直接从数组的最后一个元素开始,逆序输出每个元素
- 这种方法不会改变原数组,只是改变了输出顺序
方法二:
- 使用双指针技巧,分别从数组的开头和结尾开始
- 交换两端的元素,然后两个指针向中间移动
- 当两个指针相遇或交叉时,数组逆序完成
方法三:
- 只需遍历数组的前一半元素
- 对于每个元素,将其与对应的对称位置元素交换
- 这种方法与方法二本质相同,但写法不同