基數排序的實現及測試

2021-08-19 04:49:58 字數 867 閱讀 4936

基數排序過程無須比較關鍵字,而是通過「分配」和「收集」過程來實現排序。它們的時間複雜度可達到線性階:o(n),是一種穩定排序

基數排序的實現(用陣列的方式,還可以通過鍊錶實現)

#pragma once    //基數排序

#include

using

namespace

std;

#include

#include

int get_max(int arr, int n)

void count_sort(int arr, int n, int

exp)

; int output[10];

for(i = 0; i < n; i++)

count[(arr[i] / exp) % 10]++;

for(i = 1; i < 10; i++)

count[i] += count[i - 1];

for(i = n - 1; i >= 0; i--)

for(i = 0; i < n; i++)

arr[i] = output[i];

}void radix_sort(int arr, int n)

基數排序的測試檔案

void main()               //基數排序,用陣列的方式實現

; int n = sizeof(arr) / sizeof(arr[0]);

radix_sort(arr, n);

for(int i = 0; i < n; i++)

cout

<}

基數排序詳解及例項實現

基數排序 也叫桶排序 是一種很特別的排序方法,它不是基於比較進行排序的,而是採用多關鍵字排序思想 即基於關鍵字各位的大小進行排序的 借助 分配 和 收集 兩種操作對單邏輯關鍵字進行排序。基數排序又分為最高位優先 msd 排序和最低位優先 lsd 排序 最低位用的比較多 是根據鍵值的每位數字來分配桶的...

c 實現基數排序

以下介紹內容 百科 基數排序的方式可以採用lsd least significant digital 或msd most significant digital lsd的排序方式由鍵值的最右邊開始,而msd則相反,由鍵值的最左邊開始。以lsd為例,假設原來有一串數值如下所示 73,22,93,43,...

基數排序 佇列實現

基數排序是一種不需要比較就能實現排序的演算法思維,主要步驟為分配和收集的過程,重複這個過程於最大數的位數後,排序結束。以下是完全以佇列模擬桶的分配收集過程。標頭檔案 單鏈表部分 typedef int elemtype typedef struct lnode lnode,linklist int ...