給定數(shù)組arr[n],其中n=10000,0
排序算法
暮色呼如
2019-04-09 20:25:28
TA貢獻1824條經(jīng)驗 獲得超6個贊
采用一個類似于位圖的結(jié)構(gòu)來解決這個問題。首先,你的數(shù)據(jù)量不大,而且像你說的重復(fù)數(shù)目也不多,這里看作常數(shù)??梢月暶饕粋€10000字節(jié)大小的數(shù)組count[10000],初始化為全0。掃描一遍你的待排序的數(shù)據(jù),針對每一個值i,遞增其對應(yīng)的位置的數(shù)組值count[i]。掃描完畢后,再從頭掃描一遍a[10000],對于i,輸出a[i]次即可。這樣時間復(fù)雜度為O(n),我js不怎么懂。勉強給你寫個函數(shù)functionmySort(arr,length){varcount=newArray(length);for(vari=0;i!=length;i++){count[i]=0;}for(vari=0;i!=length;i++){count[arr[i]]++;}varindex=0;for(vari=0;i!=length;i++){for(varj=0;jarr[index++]=i; }}//alert(count);}//Anexamplevararr=newArray(10);arr[0]=1;arr[1]=2;arr[2]=1;arr[3]=0;arr[4]=9;arr[5]=8;arr[6]=6;arr[7]=2;arr[8]=3;arr[9]=6;mySort(arr,10);alert(arr);
舉報