您的位置:首页 > 职场人生

剑指offer——面试题33:把数组排成最小的数

2016-12-07 15:03 489 查看






void PrintMinNumber(int* numbers, int length)
{
if(numbers == NULL || length <= 0)
return;

char** strNumbers = (char**)(new int[length]);
for(int i = 0; i < length; ++i)
{
strNumbers[i] = new char[g_MaxNumberLength + 1];
sprintf(strNumbers[i], "%d", numbers[i]);
}

qsort(strNumbers, length, sizeof(char*), compare);

for(int i = 0; i < length; ++i)
printf("%s", strNumbers[i]);
printf("\n");

for(int i = 0; i < length; ++i)
delete[] strNumbers[i];
delete[] strNumbers;
}

// 如果[strNumber1][strNumber2] > [strNumber2][strNumber1], 返回值大于0
// 如果[strNumber1][strNumber2] = [strNumber2][strNumber1], 返回值等于0
// 如果[strNumber1][strNumber2] < [strNumber2][strNumber1], 返回值小于0
int compare(const void* strNumber1, const void* strNumber2)
{
// [strNumber1][strNumber2]
strcpy(g_StrCombine1, *(const char**)strNumber1);
strcat(g_StrCombine1, *(const char**)strNumber2);

// [strNumber2][strNumber1]
strcpy(g_StrCombine2, *(const char**)strNumber2);
strcat(g_StrCombine2, *(const char**)strNumber1);

return strcmp(g_StrCombine1, g_StrCombine2);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: