對於字串的排序,我們知道是比較相同index位置的字元的值來進行的。這樣的排序有個問題,就是當被排序的字串的內容是有數字順序的,而且還不等長就比較的鬱悶了。我們在xp以前的作業系統的資源管理器裡,就會常常看到這樣的檔名序列:
x1, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19,
x2, x20, x21, x22...
而我們的閱讀習慣因該是這樣的:
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17...
如果是排列數字,按這種閱讀習慣是理所當然的事情。可是對於字串似乎就變得有些麻煩了,對於jscript指令碼,系統提供了array.sort()方法,可以高效的排列字串。可是美中不足的是這個方法排序後的結果就是上面的第一種情況,完全不符合我們的閱讀習慣:(。
於是我們考慮使用分段排序的方式解決這個問題,**如下:
function
sortstringarray(ary)
varary =;
varcount
=10000
;for(
vari =0
; i
<
count ;
++i )
ary.sort();
dtbegin
=new
date();
ary
=sortstringarray(ary);
alert(
newdate()
-dtbegin);
後話:如果我們已知被排序的字串是數字順序的,那麼用我們的sortstringarray()排序就行了,但是要去識別那些字串是可以按數字順序排列的,我想了想好像還很困難。看看下面這個xp的資源管理器的示例就清楚了:
紅框裡的檔案的檔名就是沒有數字順序的,而xp的資源管理器就按普通的字元排序規則將其排序了。當然幾十個百來個條目要判斷出來還是很容易的,可是如果是好幾千上萬的條目,要找出有數字順序的條目就比較的鬱悶了。
字串按無序度排列
題意很明確,按無序度將字串排序 include include include include include define n 60 define m 110 using namespace std typedef struct info info 用結構體將字串與無序度儲存 info f m i...
字串的排列
題目 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串 abc,則輸出由字元a b c所能排列出來的所有字串 abc acb bac bca cab和 cba。分析 這是一道很好的考查對遞迴理解的程式設計題,因此在過去一年中頻繁出現在各大公司的面試 筆試題中。我們以三個字元 abc為例來分析...
字串的排列
一 題目 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出字元a,b,c所能排列出來的所有字串abc acb bac bca cab和cba。解答 看到這道題目似乎不知道該怎麼下手,可以採用遞迴方法,從第乙個字元開始,與後面的每乙個字元交換 abcbac cba然後對第二個字...