/*=================================================================== 1076 排序 题目描述 Description 给出n和n个整数,希望你从小到大给他们排序 输入描述 Input Description 第一行一个正整数n 第二行n个用空格隔开的整数 输出描述 Output Description 输出仅一行,从小到大输出n个用空格隔开的整数 样例输入 Sample Input 3 3 1 2 样例输出 Sample Output 1 2 3 数据范围及提示 Data Size & Hint 1<=n<=100000
解析:不说了,直接看代码吧。 =====================================================================*/ #include<stdio.h> #include<stdlib.h> int mycmp(const void *a, const void *b); int main() { int n,a[100000],i,j,flag,t,k; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); //下面是冒泡算法排序 ,结果超时 /*for(i=1;i<n;i++) { flag=1; for(j=0;j<n-i;j++) { if(a[j]>a[j+1]) { flag=0; t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } if(flag) break; //if(flag==1) break; }*/ //下面是选择排序算法,结果超时 /*for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) //寻找a[i+1]~a[n-1]当中最小的元素并把它的下标记录到k里面。 if(a[j]<a[k]) k=j; if(i!=k) { t=a[k]; a[k]=a[i]; a[i]=t; } } */ //下面是插入排序算法,结果超时 /*for(i=1;i<n;i++) { t=a[i]; for(j=i-1;j>=0&&(t<a[j]);j--) a[j+1]=a[j]; a[j+1]=t; } */ //下面调用快排库函数,结果AC qsort(a,n,sizeof(a[0]),mycmp); for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n"); return 0; } int mycmp(const void *a, const void *b) { return *((int*)a)-*((int *)b); }