#include <iostream> #include <algorithm> using namespace std; void radixsort(int* data) { int temp[10][10] = { 0 }; int order[10] = { 0 }; int n = 1; while (n <= 1000) // 看有幾位數就增加 { // 分配數字到那個桶子內 for (int i = 0; i < 10; ++i) { int key = (data[i] / n) % 10; temp[key][order[key]] = data[i]; ++order[key]; } // 重新組合data int k = 0; for (int i = 0; i < 10; ++i) { if (order[i] != 0) // 表示桶子有東西 { for (int j = 0; j < order[i]; ++j, ++k) data[k] = temp[i][j]; } order[i] = 0; } n *= 10; } } void show(int num) { cout << num << " "; } int main() { int data[10] = { 20, 354, 69, 55, 64, 157, 1236, 87, 96, 455}; radixsort(data); for_each(&data[0], &data[9], show); return 0; }
也順利練習一下STL的for_each。
0 意見:
張貼留言