写一主函数输入一数组,写一子函数实现对该数组的冒泡排序并输出(升序)。
运行效果:
请输入数组元素,用空格分隔:23 12 34 15 9 8 52 18 10 26
排序后的数组为: 8 9 10 12 15 18 23 26 34 52
第一行输入n的值表示数组有n个元素,第二行输入n个数据。
#include<stdio.h>
void sort(int n,int a[])
{
int i,j,temp;
for(i=0;i<n-1;i++)//n个数的数列总共扫描n-1次
{
for(j=0;j<n-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
{
if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
int main()
{
int a[100];
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(n,a);
return 0;
}
供参考:
#include <stdio.h>
void bbsort(int* a, int n)
{
int i, j, t;
for (i = n - 1; i > 0; i--) {
for (j = 0; j < i; j++)
if (a[j] > a[j + 1])
t = a[j], a[j] = a[j + 1], a[j + 1] = t;
}
}
int main()
{
int a[] = { 23, 12, 34, 15, 9, 8, 52, 18, 10, 26 }, i;
bbsort(a, sizeof(a) / sizeof(a[0]));
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
printf(i ? " %d" : "%d", a[i]);
return 0;
}