HM063 指针冒泡升序
HM063 指针冒泡升序
来源: 第 63 集 指针-指针配合数组和函数案例
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
把指针、数组和函数放在一起:封装一个函数,用冒泡排序把整型数组排成升序。
可以按三步来做:先准备数组,再写排序函数,最后打印排好的数组。排序函数不需要返回值,返回类型写成 void。调用时把数组名传进去——数组名就是首地址,函数用整型指针接收这块首地址。同时还要传入数组长度。长度应在函数外面算好再传入(同一作用域里常用 sizeof(数组名) / sizeof(数组名[0])),不要把长度写死在函数里,这样换一个长度仍然适用。
冒泡排序:外层循环控制趟数,下标 \(i\) 从 \(0\) 到 \(n-2\);内层比较次数随 \(i\) 减少,下标 \(j\) 从 \(0\) 到 \(n-i-2\)。若 arr[j] > arr[j+1],则用临时变量交换这两个元素。打印函数同样接收首地址指针和长度,按下标依次输出。
本题必须通过「指针收首地址 + 传入长度」的函数完成排序和输出,不能只在 main 里直接排完就打印。
输入格式
第一行一个整数 \(n\)(\(1 \le n \le 100\))。
第二行 \(n\) 个整数,每个整数的绝对值不超过 \(10^9\)。
输出格式
一行 \(n\) 个整数,为升序结果,相邻之间一个空格,行末换行。
样例
输入 #1
10
4 3 6 9 1 2 8 7 5 10
输出 #1
1 2 3 4 5 6 7 8 9 10
输入 #2
3
3 2 1
输出 #2
1 2 3
说明
样例 1 是十个无序整数,冒泡后变成 \(1\) 到 \(10\)。形参写成 int *arr(或等价的数组形参)以及 int length。内层循环条件为 \(j < length - i - 1\)。\(n=1\) 时外层循环不进入,原样输出唯一元素。
信息
- ID
- 1062
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者