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...