求速度,C语言程序设计用数组输入10个整数,按从大到小的顺序排序,并输出大于平均值的元素下标

C语言程序设计用数组输入10个整数,按从大到小的顺序排序,并输出大于平均值的元素下标,

#include<stdio.h>
int main()
{
    int a[10];
    int sum = 0,avg = 0;
    for(int i = 0;i<10;i++)
    {
        scanf("%d",&a[i]);
        sum += a[i];
    }
    avg = sum/10;
    for(int flag = 0;flag==0;)
    {
        flag = 1;
        for(int i = 1;i<10;i++)
        {
           if(a[i] < a[i-1])
            {
                flag = 0;
                int tmp;
                tmp = a[i];
                a[i] = a[i-1];
                a[i-1] = tmp;
            }
        }
    }
    int t = 0;
    for(;t<10;t++)
    {
        if(a[t] > avg)
            break;
    }
            printf("大于平均值的元素下标:");
    for(;t<10;t++)
        printf("%d ",t);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-26
这都是什么排序算法啊!
要不用快速排序或者堆排序试试?
或者试试这个。
#include <stdio.h>

void main(){
int a[10],i,j,b[10000],c[10000],d[10];
for(i=0;i<10000;i++){b[i]=c[i]=0;}
printf("================\nInput:\n");
for(i=0;i<10;i++){
scanf("%d",&a[i]);
if(a[i]>=0)b[a[i]]=1;
else c[-a[i]]=1;
}
j=0;
for(i=9999;i>=0;i--){
if(c[i]){
d[j]=-i;
j++;
}
}
for(i=0;i<10000;i++){
if(b[i]){
d[j]=i;
j++;
}
}
printf("================\nOutput:\n");
for(i=0;i<10;i++)printf("%d\n",d[i]);
getchar();
}
我创的复杂度为O(n)的算法。哈希表排序。
第2个回答  推荐于2017-10-21
#include "stdio.h"
#define N 10
void main()
{
int a[N],b[N],i,j,temp;
int count=0;
int sum=0;
float aver;
printf("Input 10 numbers:\n");
for(i=0;i<N;i++)
{
printf("Input number %d:",i+1);
scanf("%d",&a[i]);
b[i]=a[i];
sum+=a[i];
}
aver=(float) sum/N;
for(i=0;i<N;i++)
{
for(j=N-1;j>i;j--)
{
if(a[j]>a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
printf("Before sort:\n");
for(i=0;i<N;i++)
{
printf("%d\t",b[i]);
}
printf("\nAfter sort:\n");
for(i=0;i<N;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
for(i=0;i<N;i++)
{
if(b[i]>aver)
printf("%d\t",i);
}
}本回答被提问者和网友采纳
第3个回答  2011-12-26
#include<stdio.h>

int main()
{
int a[10];
int i = 0;
int avg = 0;
while (i < 10)
{
scanf("%d", &a[i]);
avg += a[i];
i++;
}
avg /= 10;

printf("index: ");
i = 0;
while (i < 10)
{
if (a[i] > avg)
printf("%d ", i);

i++;
}

printf("\n");

return 0;
}
第4个回答  2011-12-26
不明白