什麼是計數排序?

2021-09-20 00:24:11 字數 2737 閱讀 8677

public

static

int countsort(

int array)

}

//2.根據數列最大值確定統計陣列的長度

int countarray =

newint

[max+

1];

//3.遍歷數列,填充統計陣列

for(

inti=

0; i

countarray[array[i]]++;

}

//4.遍歷統計陣列,輸出結果

intindex =

0;

int sortedarray =

newint

[array.length];

for(

inti=

0; i

for(

intj=

0; j

sortedarray[index++] = i;

}

}

return

sortedarray;

}

public

static

void

main(

string

args) ;

int sortedarray = countsort(array);

system

.out

.println(

arrays

.tostring(sortedarray));

}

最大的最終位置

(在重複元素的情況下還會有其他相同元素在此位置之前)

。比如下標是5的值為4,說明 95 排序後的位置最大就是第四。 4 

<---> sortedarray[

4-1] );

public

static

int countsort(

int array)

if(array[i] < min)

}

intd = max - min;

//2.建立統計陣列並統計對應元素個數

int countarray =

newint

[d+1

];

for(

inti=

0; i

countarray[array[i]-min]++;

}

//3.統計陣列做變形,後面的元素等於前面的元素之和

intsum =

0;

for(

inti=

0;i

sum += countarray[i];

countarray[i] = sum;

}

//4.倒序遍歷原始數列,從統計陣列找到正確位置,輸出到結果陣列

int sortedarray =

newint

[array.length];

for(

inti=array.length-

1;i>=

0;i--)

return

sortedarray;

}

public

static

void

main(

string

args) ;

int sortedarray = countsort(array);

system

.out

.println(

arrays

.tostring(sortedarray));

}

原文發布時間為:2018-10-19 」。

什麼是計數排序?

有這樣一道排序題 陣列裡有20個隨機數,取值範圍為從0到10,要求用最快的速度把這20個整數從小到大進行排序。第一時間你可能會想使用快速排序,因為快排的時間複雜度只有o nlogn 但是這種方法還是不夠快,有沒有比o nlogn 更快的排序方法呢?你可能會有疑問 o nlogn 已經是最快的排序演算...

什麼是計數排序?

計數排序其實是桶排序的一種特殊情況。當要排序的 n 個資料,所處的範圍並不大的時候,比如最大值是 k,我們就可以把資料劃分成 k 個桶。每個桶內的資料值都是相同的,省掉了桶內排序的時間。我們都經歷過高考,高考查分數系統你還記得嗎?我們查分數的時候,系統會顯示我們的成績以及所在省的排名。如果你所在的省...

什麼是計數排序?

假設,有20個隨機整數,取值範圍是0到10,需要對其排序。可能第一反應是使用快速排序啊,快排的時間複雜度是o nlog n 但是,可不可以比o nlog n 更快呢?這就是這篇文章要介紹的計數排序 從名字上來看,就是計算數字出現頻次的排序方法,非常的見名知意 因為取值範圍是0到10 整數的值在0,1...