經典演算法 基數排序

2022-03-30 22:35:57 字數 1406 閱讀 5647

概述:基數排序是一種高效的線性排序演算法。其方法是將資料按位分開,並從資料的最低有效位到最高有效位進行比較,依次排序,從而得到有序資料集合。

例子:用基數排序對十進位制資料進行排序。

在對個位數排序之後=> ;

在對十位數排序之後=> ;

有一點非常重要,在對每一位數值進行排序時其排序過程必須是穩定的。

程式**:

#include #include 

using

namespace

std;

void rxsort(int* data, int size, int p, int

k)

for (int i=1; ii)

for (int i=size-1; i >=0; --i)

memcpy(data, sorted,

sizeof(int)*size);

//計數排序 end

}

delete

counts;

delete

sorted;}//

輔助函式

templatestatic

void showelem(t&val)

template

static

bool validate(t* data, int

len)

}return

true;}

//測試**

test(algo, tcountsort)

; rxsort(d1,

8, 2, 10

); for_each(d1, d1+8, showelem);

assert_true(validate(d1,

8));

cout

<

int d2 = ;

rxsort(d2,

1, 1, 10

); for_each(d2, d2+1, showelem);

assert_true(validate(d2,

1));

cout

<

int d3 = ;

rxsort(d3,

19, 3, 10

); for_each(d3, d3+19, showelem);

assert_true(validate(d3,

19));

cout

<

}

執行結果:

演算法精解-c語言描述

基數排序 經典

基數排序 英語 radix sort 是一種非比較型 整數排序演算法 其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。由於整數也可以表達字串 比如名字或日期 和特定格式的浮點數,所以基數排序也不是只能使用於整數。它是這樣實現的 將所有待比較數值 正整數 統一為同樣的數字長度,數字較短的...

基數排序演算法

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 快速排序演算法在 ...