第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;
}