已知数组A10给A10赋值对A10进行排序并输出 用C程序作答

如题所述

//这是以前写的一个冒泡排序,对于数组元素个数 可以自己修改MAX_LEN的值,楼主可参考

#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 10 //定义可以进行排序的数据个数的最大值
void BubbleSort(int a[],int len);//冒泡排序函数声明

int main()
{
int i,length,a[MAX_LEN];
char ch_flag;
while(1)
{
printf("Please input the array's length:\n");
scanf("%d",&length); //输入要排序的数据个数
printf("Please input %d numbers:\n",length);
for(i=0;i<length;i++)//输入要排序的数据(个数要与上边的提到的个数匹配)
{
scanf("%d",&a[i]);
}

BubbleSort(a,length);//调用冒泡排序接口函数

for(i=0;i<length;i++)
{
printf("%d ",a[i]);//打印出排序后的结果
}
printf("\nAre you continue? (Y/N)\n");

getchar();//获取缓冲区的一个字符并舍弃,因为整数输入完毕后缓冲区中还存在一个回车换行符

scanf("%c",&ch_flag); //是否进行下一组数据排序
if(ch_flag=='Y'||ch_flag=='y')//输入y或者Y继续,否则退出程序
{
continue;
}
else
break;

}
return 0;
}

void BubbleSort(int a[],int len) //先内层循环内部两两比较,再外层循环
{
int i,j,temp;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-i-1;j++)//将较大的元素向右移动,直到在它右边的所有元素当中没有比他小的元素为止
{
if(a[j+1]<a[j])//将相邻的两个元素当中较大的元素向右移动(交换两个数的位置)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答