基數排序法

2021-07-04 23:10:18 字數 1227 閱讀 2773

摘要:(1)基數排序法是建立在桶式排序的基礎之上,而桶式排序的缺點就是不方便計算數值很大的陣列(元素個數不一定多)。利用基數排序可以解決這個問題

(2)基數排序的基本思想是將元素的每一位都拿出來進行比較,比較的順序是從低位到高位。第一次比較之後,再將比較過的資料取出下一位進行比較(注意:比較的是某一位(或者多位)的大小,但是存放的整個元素)。

(3)這樣,如果兩個元素a,b的第1-i位相同,而第i+1位a>b,則a會排在b的前面,這樣當他們第i+2位也相同的時候,a任然排在b前面(這是由前面的比較決定的)相當於進行多次桶式排序,每一次都在前一次的基礎上進行。

如圖:

(4)採用的資料結構:如果採用乙個二維的陣列,那麼就需要10*n的空間(n是元素個數).而實際上我們只需要n個空間。因此採用鍊錶,定義乙個鍊錶陣列(陣列成員是鍊錶),這樣每乙個成員所需要的空間就可以靈活的決定。

#include "stdafx.h"

#include "stdlib.h"

#include "malloc.h"

#include "time.h"

#include "math.h"

#include "malloc.h"

typedef

struct node *ptrtonode;

#define number_stu 1000//1000個學生

struct node

;typedef ptrtonode list;

struct student

;list create(list l, int x)//用來建立乙個單向鍊錶

int digit(int number , int k)//獲得第 3*(k-1)+1 到3*k位

return result;

}list delete(list l,list p)//刪除鍊錶節點,返回刪除節點的後乙個;有可能返回隨機位址

int _tmain(int argc, _tchar* argv)

int x = 0;

for (int i = 1;i<=3;i++)

//覆蓋原陣列

m = 0;

list p ;

for(int i = 0;i<=999;i++)}}

return

0;}

基數排序法

基數排序是一種常見的演算法,雖然在各個資料結構教材中都能看到,但在面試或筆試中卻很少遇到。雖然知道基數排序的原理,但從未寫過它的實現演算法,最近看了字尾陣列中用到了基數排序,又仔細研究了下,很有收穫。基數排序不同於其他的排序演算法,它不是基於比較的演算法。基數排序是一種借助多關鍵字排序的思想對單邏輯...

基數排序法

基數排序的發明可以追溯到1887年赫爾曼 何樂禮在打孔卡片製表機 tabulation machine 上的貢獻。基數排序 radix sort 屬於 分配式排序 distribution sort 又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序...

基數排序法(Java實現)

class demo 呼叫基數排序函式 lsd radixsort arr,3 輸出排序後的陣列 for int i 0 i arr是要排序的陣列,max是陣列中最大的數有幾位 public static void lsd radixsort int arr,int max 分別統計第k位是0,1,...