真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

把數(shù)組排成最小(大)的數(shù)-創(chuàng)新互聯(lián)

這是一道經(jīng)典的面試題,初次看到這道題我們可能會(huì)想到全排列,然后把每個(gè)排列拼起來(lái),最后我們求出拼出來(lái)的最小值就可以了,下面我們說(shuō)一種更快的算法。

目前創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、徐州網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

      其實(shí)我們可以找出一種排序規(guī)則,數(shù)組根據(jù)這個(gè)排序規(guī)則就能排成一個(gè)最小的數(shù)。我們要確定排序規(guī)則,就要比較兩個(gè)數(shù)字,比如m和n,我們需要一個(gè)規(guī)則判斷m和n哪個(gè)應(yīng)該排在前面,并不僅僅是比較這兩個(gè)數(shù)的大小。

      關(guān)于這道題我們還需要考慮的一個(gè)潛在問(wèn)題是假如m和n都在int的表達(dá)范圍內(nèi),那么它們拼接之后呢?超出int的范圍怎么辦?這些都是我們需要考慮的問(wèn)題,這是一個(gè)隱藏的大數(shù)問(wèn)題。我們都知道,我們可以通過(guò)把數(shù)字轉(zhuǎn)換成字符串的形式來(lái)解決大數(shù)問(wèn)題,這樣多大的位數(shù)我們都能裝下,裝換成字符串后,比較他們拼接成的數(shù)字的大小就直接按照字符串的大小比較規(guī)則來(lái)就可以了。下面我們看看具體的代碼。

#include
#include 
#include 
const int g_MaxNumberLength = 10;  //×××所能表示的大位數(shù)
char *g_StrCombine1 = new char[g_MaxNumberLength*2 + 1];  //用來(lái)存放超過(guò)×××位數(shù)的字符串
char *g_StrCombine2 = new char[g_MaxNumberLength*2 + 1];
int compare(const void* strNumber1, const void* strNumber2)//自定義比較函數(shù),比較兩個(gè)字符串大小
{
 strcpy(g_StrCombine1, *(const char**)strNumber1);
 strcat(g_StrCombine1, *(const char**)strNumber2);
 strcpy(g_StrCombine2, *(const char**)strNumber2);
 strcat(g_StrCombine2, *(const char**)strNumber1);
 return strcmp(g_StrCombine1, g_StrCombine2)>0;//注意這里大于0默認(rèn)升序排列,小于0降序
}
void PrintfMinNumber(int* number, int length)
{
 if (number == NULL || length < 0)
 {
  return;
 }
 char** strNumbers = (char**)(new int[length]);  //定義一個(gè)二維數(shù)組
 int i = 0;
 for (; i < length; ++i)
 {
  strNumbers[i] = new char[g_MaxNumberLength + 1]; // 數(shù)組里面每個(gè)元素都是char類(lèi)型的指針
  sprintf(strNumbers[i], "%d", number[i]);
 }
 qsort(strNumbers, length, sizeof(char*), compare);
 i = 0;
 for (; i < length; i++)
 {
  printf("%s", strNumbers[i]);
 }
 printf("\n");
 i = 0;
 for (; i < length; ++i)
 {
  delete[] strNumbers[i];
 }
 delete[] strNumbers;
}
int main()
{
 int arr[3] = { 12, 3, 4};//這里數(shù)組內(nèi)容自己隨便給就可以
 int len = sizeof(arr) / sizeof(arr[0]);
 PrintfMinNumber(arr, len);
 return 0;
}

假如是上面數(shù)組的內(nèi)容,我在vs2013下運(yùn)行結(jié)果如下:

把數(shù)組排成最?。ù螅┑臄?shù)

        我們可以看到,正如我們預(yù)期的那樣,把數(shù)組內(nèi)容排成了我們需要的最小的整數(shù)。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。


名稱(chēng)欄目:把數(shù)組排成最?。ù螅┑臄?shù)-創(chuàng)新互聯(lián)
本文來(lái)源:http://weahome.cn/article/cssejp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部