Skip to content

Commit 96fdbf8

Browse files
authored
基数排序
1 parent c27a4b7 commit 96fdbf8

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

Radix-Sort.cpp

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#include <cstdio>
2+
3+
#define ELEMENT_COUNT 100000
4+
5+
using namespace std;
6+
7+
int n, d[ELEMENT_COUNT];
8+
int pow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000 };
9+
10+
void radix_sort()
11+
{
12+
static int c[10], t[11], _d[ELEMENT_COUNT];
13+
for (int k = 0; k < 8; k++)
14+
{
15+
for (int i = 0; i < 10; i++)
16+
{
17+
c[i] = t[i] = 0;
18+
}
19+
for (int i = 0; i < n; i++)
20+
{
21+
c[d[i] / pow10[k] % 10 + 1]++;
22+
}
23+
for (int i = 1; i < 10; i++)
24+
{
25+
c[i] += c[i - 1];
26+
}
27+
for (int i = 0; i < n; i++)
28+
{
29+
int w = d[i] / pow10[k] % 10;
30+
_d[c[w] + t[w]] = d[i];
31+
t[w]++;
32+
}
33+
for (int i = 0; i < n; i++)
34+
{
35+
d[i] = _d[i];
36+
}
37+
}
38+
}
39+
40+
int main()
41+
{
42+
scanf("%d", &n);
43+
for (int i = 0; i < n; i++)
44+
{
45+
scanf("%d", &d[i]);
46+
}
47+
radix_sort();
48+
for (int i = 0; i < n; i++)
49+
{
50+
printf("%d\n", d[i]);
51+
}
52+
return 0;
53+
}

0 commit comments

Comments
 (0)