常用排序演算法 基數排序(桶排序)

2021-07-15 20:22:40 字數 1075 閱讀 9008

本文以最大為3位數字為例,並可以對負數進行排序

#include

using

namespace

std;

//獲取第d+1位的數字//

int get_digit(int x,int d)

;

return (abs(x) / a[d]) % 10;

} void lsd_sort(int arr,int left, int right, int d)

;

//按照分配標準依次進行排序過程

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

//count[i]表示第i個桶的右邊界索引

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

//這裡要從右向左掃瞄,保證排序穩定性

for(i = right; i > left - 1; --i)

//一次桶排結束

for(i = left, j = 0; i < right+1; ++i, ++j)

}

} void main()

;int n;

cin >> n;

int *arr = new

int[n];

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

cin >> arr[i];

int gap = 0;//區分正負邊界//

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

}lsd_sort(arr, 0, gap - 1, 3);

int p = 0, q = gap - 1;

while(p < q)

lsd_sort(arr, gap, n - 1, 3);

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

cout

<< arr[i] << " ";

cout

<< endl;

delete arr;

system("pause");

}

排序演算法 基數排序(桶排序)

基數排序 公升序 是一種非比較式的排序方式,和之前博文中提到的快排,氣泡排序,插入排序這些排序演算法不一樣,它沒有使用任何交換的方式,那麼又是通過什麼方式進行的排序呢?它的基本思想是通過分配的方法把元素從小到大分配,以到達排序的作用。1.建立10個桶,分別用來放對應的數字 2.按照最低位 個位 的數...

基數排序(桶排序)

1。什麼是基數排序 radix sort 基數排序 屬於分配式排序 distribution sort 又稱 桶排序 bucket sort 它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用。2.它和歸併一樣,屬於穩定型演算法。public void radixsort i...

基數排序(桶排序)

思想 先把這組資料的個位排有序,再把十位排有序,再排百位 千位 include include include include void showarr int arr,int len printf n int getmaxnumfin int arr,int len 找陣列中最大數,並求出最大數的...