c语言(最好用冒泡算法) 求十个数中最大的五个数(从大到小排序),和最小的五个数(从小到大排序)

如题所述

#include<stdio.h>


int main(void)

{

int a[10]= {1,9,5,6,4,8,0,2,3,7};

int flag=0;

while(flag==0)

{

flag=1;

int i;

for(i=0; i<9; ++i)

{

if(a[i]<a[i+1])

{

int temp=a[i];

a[i]=a[i+1];

a[i+1]=temp;

flag=0;

}

}


}

int j;

printf("max 5 numbers:");

for(j=0;j<5;++j)printf("%d ",a[j]);

printf("\n");

printf("min 5 numbers:");

for(j=9;j>=5;--j)printf("%d ",a[j]);

printf("\n");

}

追问

你这个是投机取巧啊,j<5/j<10这样来将两组数分组。我想要输入的任意10个数,通过一个代码都能分成两组。而且麻烦留意“最小的五个数从小到大排序”

追答

嗯...我写了冒泡,冒泡不是排序嘛...或者你的意思是单开一个数组存最大最小的那些?如果要实现从小到大排序的话,我可以再写一遍冒泡,从小到大排。是这个意思嘛?因为冒泡必须做完整排序,要是就要最大五个最小五个的话,选择排序更适合。需要我写一遍选择排序嘛?

追问

麻烦你了,问题是这样的

就是那十个数,在代码里面可以随意换,然后程序还能按要求完成解答这个问题

追答

题目说了要冒泡,那就冒泡好了,看起来不让用选择排序。而且,我觉得他题目说了输出第一行为什么,第二行为什么,他并没有管你自己怎么实现的...他没有说,把这10个数字前五个怎么排列,后五个怎么排列,然后输出。他说的是,输出的第一行是什么,第二行是什么。他没限制我内部怎么存这些数字。那我觉得我这样应该没问题。

温馨提示:答案为网友推荐,仅供参考