HM063 指针冒泡升序

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
通过率
?
上传者