读入整数N,再读入N个整数存入数组,排序后输出。对数组排序请使用函数实现(冒泡法)。
输入样例:
10
72 29 5 91 63 32 68 40 57 11
结尾无空行
输出样例:
5 11 29 32 40 57 63 68 72 91
结尾无空行
题目要求:对数组排序请使用函数实现(冒泡法)
所以,我在不调用<string.h>字符串库函数的情况下,调用了两个函数,分别进行交换和判断大小。
#include<stdio.h>
void swap(int *px, int *py); //两个数进行交换的函数
void bubble(int a[], int n); //判断两个数是否要进行交换的函数(冒泡排序的关键)
int main()
{
int n, i;
int a[1000];
scanf("%d", &n);
for(i = 0;i<n;i++)
{
scanf("%d", &a[i]);
}
bubble(a, n);
for(i = 0;i<n;i++)
{
printf("%d", a[i]);
if(i!=(n-1))
{
printf(" "); //这是为了保证最后没有空格
}
}
return 0;
}
void swap(int *px, int *py) //x大, y小,两者进行交换(把小的换到前面去)
{
int pt;
pt = *px;
*px = *py;
*py = pt;
}
void bubble(int a[], int n) //n是数组a中等待排序的数量
{
int i, j, t;
for(i = 1;i<n;i++)
{
for(j = 0;j<n-1;j++)
{
if(a[j]>a[j+1])
{
swap(&a[j], &a[j+1]); //调用另一个函数进行交换
}
}
}
}