基於計數排序子程式的基數排序實現

2021-07-04 01:31:31 字數 836 閱讀 9307

#include "stdafx.h"

#include #include using namespace std;

#define radix 3

#define length 7

int a[length] = ;

// copy a into b

void copyarray(int* a, int* b)

}void printarray(int* a)

cout << endl;

}//返回整型a的第i位數

//getdigiti(790,3) = 7

//getdigiti(790,2) = 9

//getdigiti(790, 1) = 0

int getdigiti(int a, int i)

//計數排序

void countingsort(int* a, int i)

; //存本次的排序結果

int c[10] = ; //用於統計的輔助陣列

//統計第i位上的值出現次數

for (int k = 0; k < length; ++k)

//累加

for (int k = 1; k < 10; ++k)

//根據累加陣列c,對a進行排序,結果在b中

for (int k = length-1; k >= 0; --k)

copyarray(b,a);

}//基數排序

void radixsort()

}int _tmain(int argc, _tchar* argv)

計數排序 基數排序

一.計數排序 counting sort 基本思想 對每乙個輸入元素x,確定出小於x的元素個數。適用範圍 適用於輸入是由小範圍的整數構成的序列。穩定性 演算法是穩定的。具體實現 include using namespace std arr 初始輸入陣列,res 存放排序結果的陣列,hash臨時儲存...

桶排序 基數排序 計數基數排序 Java

前面已經講述了很多排序演算法,但是他們的排序演算法都是基於兩個值之間的比較,通過決策樹的方法可以證明深度為d的二叉樹則最多有 一些好的排序演算法是可以達到時間複雜度是線性的,桶排序就是其中一種。比如有n個數,但是這些數的最大數不超過m。這個時候就可以定義乙個含有m個元素的陣列 初始值為0 然後遍歷n...

計數排序和基數排序

計數排序和基數排序是屬於線性級時間複雜度的排序方式,雖然沒有冒泡,選擇,快排演算法那些讓人廣為所知,但是這兩種排序方式在某些場合非常適用。計數排序是基數排序的基礎,最為關鍵的是 基數排序演算法是字尾陣列的關鍵 當然字尾陣列也可以用快排 字尾陣列是用於處理字串的一種非常優秀的資料結構,可以高效的處理很...