是这样的 因为编程要求,我先是声明了一个3列动态二维数组s[m][3],接下来是要根据s[i][3],就是第三列的数据对整个二维数组进行降序排序。我试验了一下倘若数据m比较小就可以实现排序,如果m比较大时,就不行了,更不要谈350000了 int main() int (*s)[3]; for(i = 0; i <MAX_LINES-2;i++){ } |
|
30分 |
应该是
s[i][0],s[i][1],s[i][2] 而不是 s[i][1],s[i][2],s[i][3] 第三列是s[i][2]。 #include<stdio.h> #include<time.h> #include<stdlib.h> int comp(const void * a,const void * b) { return (*(int(*)[3])b)[2]-(*(int(*)[3])a)[2]; // 这里表示降序 } int main() { size_t count,i,j; int (*datas)[3]=NULL; clock_t cl; scanf("%zu",&count); datas=(int(*)[3])malloc(count*sizeof(int[3])); if(NULL==datas) { fputs("内存不足",stderr); return 1; } srand(time(NULL)); for(i=0;i<count;++i) for(j=0;j<3;++j) datas[i][j]=rand(); // 生成随机数据 cl=clock(); qsort(datas,count,sizeof(int[3]),comp); // 快速排序 cl=clock()-cl; for(i=1;i<count;++i) if(datas[i][2]>datas[i-1][2]) // 如果后者大于前者,则排序有错误。 break; if(i==count) puts("排序正确"); else puts("排序错误"); printf("time:%lf\n",(double)cl/CLOCKS_PER_SEC); // 排序时间 free(datas); return 0; } |
10分 |
“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,搬手指头心算验证一下程序到底应该写为 x、x-1、x+1中的哪个? <、<=、==、>、>=中的哪个? |
什么叫做根据第三列数据排序?
|
|
确实hi下标的原因 汗
|