// 冒泡排序,输入一个整数,下一行再输入一行数,对这些数按升序排列
#include <stdio.h>
void ARR(int N, int arr[50]) // 将输入数据读入原数组
// 在形参为数组的时候它会退化成指针以下两种算法完全正确
// int ARR(int N,int *arr)//显式表明是指针
// int ARR(int N,int arr[50])//隐式转换为指针
{
int a;
for (int i = 0; i < N; i++) {
scanf("%d", &a);
*(arr + i) = a;
}
} // 存值进数组
void BUBBLE(int N, int* arr) {
int temp = 0;
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - 1 - i; j++) {
if (*(arr + j) < *(arr + j + 1)) { // 降序交换
temp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = temp;
}
}
}
}
int main() {
int n;
int arr[50] = {0};
scanf("%d", &n);
ARR(n, arr); // 个数和数组首元素的地址,这样就可以修改被调函数中的数值了
BUBBLE(n, arr);
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
}