二级排序,快排
1 #include<stdio.h> 2 #include<string.h> 3 double a[10010]; 4 int b[10010]; 5 void quicksort(double a[],int low,int high) 6 { 7 int i=low; 8 int j=high; 9 double temp=a[i]; 10 int temp2=b[i]; 11 if(i<j) 12 { 13 while(i<j) 14 { 15 while(a[j]<=temp&&i<j) j--; 16 a[i]=a[j]; 17 b[i]=b[j]; 18 while(a[i]>=temp&&i<j) i++; 19 a[j]=a[i]; 20 b[j]=b[i]; 21 } 22 a[i]=temp; 23 b[i]=temp2; 24 quicksort(a,low,i-1); 25 quicksort(a,j+1,high); 26 } 27 else return; 28 } 29 void quicksort2(int b[],int low,int high) 30 { 31 int i=low; 32 int j=high; 33 int temp=b[i]; 34 if(i<j) 35 { 36 while(i<j) 37 { 38 while(b[j]<=temp&&i<j) j--; 39 b[i]=b[j]; 40 while(b[i]>=temp&&i<j) i++; 41 b[j]=b[i]; 42 } 43 b[i]=temp; 44 quicksort2(b,low,i-1); 45 quicksort2(b,j+1,high); 46 } 47 else return; 48 } 49 int main() 50 { 51 int n,m,k; 52 double temp; 53 while(scanf("%d %d %d",&n,&m,&k)!=EOF) 54 { 55 memset(a,0,sizeof(a)); 56 memset(b,0,sizeof(b)); 57 for(int i=0;i<n;i++) 58 for(int j=0;j<m;j++) 59 { 60 scanf("%lf",&temp); 61 a[j]+=temp; 62 } 63 for(int i=0;i<m;i++) 64 b[i]=i+1; 65 quicksort(a,0,m-1); 66 quicksort2(b,0,k-1); 67 printf("%d",b[0]); 68 for(int i=1;i<k;i++) 69 printf(" %d",b[i]); 70 printf(" "); 71 } 72 }