写一函数对输入的一组整数由小到大排序,在main主函数调用该函数实现排序。 没有百度到合适的答案,

写一函数对输入的一组整数由小到大排序,在main主函数调用该函数实现排序。
没有百度到合适的答案,等大神。

#include <stdio.h>
void int_sort(int *a, int l)
{
    int i, j;
    for(i = 0; i < l-1; i ++)
        for(j = i+1; j < l; j ++)
            if(a[i]>a[j])
            {
                int t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
}

int main()
{
    int a[10];
     int i;
    for(i = 0; i < 10; i ++)
        scanf("%d",&a[i]);
    int_sort(a,10);
    for(i = 0; i < 10; i ++)
        printf("%d,",a[i]);
    printf("\n");
    
    return 0;
}追问

能不能输入任意个数的数字就可以输出他们由小到大的排序

我想要的,就是那个,但是似乎很难

大神怎么看?

追答

以什么作为结束标志呢?
还是先输入个数,再输入数

追问

先不输个数,就你输多少个数字自己预先都没定好,但通过程序得到你输了多少个数

就是这里我想不到答案

追答

这里需要约定输入结束的
不然程序不能知道你输入结束没。
比较常见的 是输入ctrl+z做结束。
或者任意输入一个非法值,比如字符做结束。
你喜欢哪种?都可以做到的

追问

c语言可能达到吗?任意个数字输进去就可以排序,不定义长度,长度由程序自己算

以什么作结束标志都可以,只要输入任意个数输出排序

追答

可以的 重点是你得让程序知道输入结束
比如
你可以输入
1 2 3 4 5 A
或者
1 2 3 4 5 6 7 8 0 10 A
这样告诉程序你输入完了。

追问

输入换行结束可以吗

加a之类结束也好

就加a结束能不能帮我写一个

谢谢!!!

追答

可以。

#include <stdio.h>
#include <stdlib.h>
void int_sort(int *a, int l)
{
    int i, j;
    for(i = 0; i < l-1; i ++)
        for(j = i+1; j < l; j ++)
            if(a[i]>a[j])
            {
                int t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
}
 
int main()
{
    int *a;
int t = 10;
int i = 0;
a = (int*)malloc(sizeof(int)*t);

while(1)
{
scanf("%d",a+i);
i++;
if(getchar()=='\n') break;
if(t == i)
{
t+=10;
a = (int *)realloc(a, sizeof(int)*t);
}
}
t = i;
    int_sort(a,t);
    for(i = 0; i < t; i ++)
        printf("%d,",a[i]);
    printf("\n");

free(a);
    return 0;
}追问

不愧大神!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-24
用冒泡排序法
相似回答
大家正在搜