const int MaxNumberLength = 10;char *StrCombine1 = new char[MaxNumberLength*2+1];char *StrCombine2 = new char[MaxNumberLength*2+1];int compare(const void* StrNum1,const void* StrNum2){ strcpy(StrCombine1,*(const char**)StrNum1); strcat(StrCombine1,*(const char**)StrNum2); strcpy(StrCombine2,*(const char**)StrNum2); strcat(StrCombine2,*(const char**)StrNum1); return strcmp(StrCombine1,StrCombine2);}void PRintMinNum(int *numbers,int length){ if(numbers==NULL|| length<=0) return; char** StrNum = (char**)(new int[length]);//注意此处的定义 for(int i = 0;i<length;i++) { StrNum[i] = new char[MaxNumberLength+1]; sprintf(StrNum[i],"%d",numbers[i]); } qsort(StrNum,length,sizeof(char*),compare); for(int i = 0;i<length;i++) printf("%s",StrNum[i]); printf("/n"); for(int i = 0;i<length;++i) delete[] StrNum[i]; delete[] StrNum;}将数组中的数字转换成字符串,在函数compare中定义比较规则,并依据该规则用库函数qsort排序,比较的规则是:把数字m和n拼接起来得到mn和nm,它们的位数肯定是相同的,因此比较他们的大小只需要按照字符串的大小的比较规则就可以了。
新闻热点
疑难解答