電腦-窮人的
作法:排序(10萬以上請用內建的排序)
/*********************************************************/
#include<stdio.h>
#include<stdlib.h>
int num[1000000]={0};
int compare( const void *a, const void*b )
{
int *aa=(int*)a, *bb=(int*)b;
if(*aa>*bb) return 1;
if(*aa==*bb) return 0;
if(*aa<*bb) return -1;
}
main()
{
int a,b,n,m,max=0;
int temp,flag=0,top=0,num1=0;
scanf("%d",&n);
while(temp=getchar())
{
if(temp<=57&&temp>=48)
{num1=num1*10+temp-48;flag=1;}
else
{
if(flag==1)
{
num[top]=num1;
top++;
num1=0;
if(top==n) break;
flag=0;
}
}
}
qsort(num,top,sizeof(int),compare);
for(a=0;a<top;a++)
printf("%d ",num[a]);
return 0;
}
上一篇:程式設計師的面試問題(二)
下一篇:共同的數
這樣不就好了??
#include<stdio.h>
#include<stdlib.h>
int cmp(const void* a,const void* b){
return *(int*)a-*(int*)b;
}
int main(){
int array[1000000];
int N;
int i;
while(scanf(”%d”,&N)!=EOF){
for(i=0;i<N;i++){
scanf(”%d”,&array[i]);
}
qsort(array,N,sizeof(int),cmp);
for(i=0;i<N;i++){
printf(”%d ”,array[i]);
}
printf(”\n”);
}
return 0;
}
在大筆測資輸入時,速度可以提升2~3倍
參考文章:
http://blog.pchome.com.tw/news/iustlovefish/3/1313128292/20090621193336/ 2009-06-25 17:37:21