基數排序是一種資料格式相關的演算法,適用範圍有限,當資料位數較小時,基數排序法的時間複雜度近似為o(n),效率高於其它的穩定性排序演算法。
1. 演算法思想
以十進位制數為例,現將元素按個位出入一次基數桶,再按十位出入基數桶……直至按最高位出入基數桶,此時序列整體有序。
2. 時間複雜度
最好情況 o(d*(n + r)):d是資料位數,r是基數,如十進位制即為10
最壞情況 o(d*(n + r)):與待排序列的元素順序無關
3. 空間複雜度 o(n + r)
需要r個鍊錶指標,以及所有鍊錶共儲存n個元素
4. 穩定性
穩定。出入鍊錶都是按原始順序的,而且同值元素始終進入到相同的鍊錶
5. **實現(偽**)
因為涉及鍊錶操作,如果帶上鍊表實現過於冗長,因此只列出偽**
void radixsort(int *a, int n)
j = 0;
for (int k = 0; k < radix; ++k)
}}}
演算法筆記 基數排序
基數排序是一種資料格式相關的演算法,適用範圍有限,當資料位數較小時,基數排序法的時間複雜度近似為o n 效率高於其它的穩定性排序演算法。1.演算法思想 以十進位制數為例,現將元素按個位出入一次基數桶,再按十位出入基數桶 直至按最高位出入基數桶,此時序列整體有序。2.時間複雜度 最好情況 o d n ...
基數排序演算法
include stdafx.h include iostream include math.h using namespace std struct radixsort 建立迴圈鍊錶 radixsort creatlink else le ls ls new radixsort 為下乙個節點在堆記...
基數排序演算法
以下內容為程式 int quicksort int p,int n extern int insertsort int p,int n static int partition int p,int n,int m static int quick sort int p,int n 快速排序演算法在 ...