Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sofm
Python_277747
提交
b30c1429
P
Python_277747
项目概览
sofm
/
Python_277747
与 Fork 源项目一致
Fork自
inscode / Python
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Python_277747
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
b30c1429
编写于
5月 03, 2023
作者:
6
645264e96180332c2cd6b60e
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Wed May 3 13:59:00 UTC 2023 inscode
上级
df352508
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
59 addition
and
1 deletion
+59
-1
main.py
main.py
+59
-1
未找到文件。
main.py
浏览文件 @
b30c1429
print
(
'欢迎来到 InsCode'
)
\ No newline at end of file
#定义静态链表的结构体
struct
Node
{
int
data
;
//
数据
int
next
;
//
指向下一个结点的指针
bool
isEnd
;
//
标记该结点是否是一个数的末位结点
}
list
[
N
];
#获取num从右往左第i位上的数字
int
getDigit
(
int
num
,
int
i
)
{
while
(
i
--
)
{
num
/=
10
;
}
return
num
%
10
;
}
void
radixSort
()
{
int
n
=
0
;
//
存储静态链表中结点的数量
int
p
=
maxn
-
1
;
//
指向静态链表头部
while
(
p
!=
-
1
)
{
list
[
p
].
isEnd
=
true
;
//
标记该结点是一个数的末位结点
n
++
;
p
=
list
[
p
].
next
;
}
for
(
int
i
=
0
;
i
<
d
;
i
++
)
{
//
从低位到高位依次对每一位进行排序
int
head
[
maxn
],
tail
[
maxn
];
//
辅助数组
,
存储每个桶的头指针和尾指针
for
(
int
j
=
0
;
j
<
10
;
j
++
)
{
//
初始化辅助数组
head
[
j
]
=
tail
[
j
]
=
-
1
;
}
int
k
=
maxn
-
1
;
//
指向静态链表头部
while
(
k
!=
-
1
)
{
//
将所有数按照第i位上的数字分配到不同的桶中
int
digit
=
getDigit
(
list
[
k
].
data
,
i
);
if
(
head
[
digit
]
==
-
1
)
{
head
[
digit
]
=
k
;
}
else
{
list
[
tail
[
digit
]].
next
=
k
;
}
tail
[
digit
]
=
k
;
k
=
list
[
k
].
next
;
}
int
last
=
-
1
;
//
存储上一个桶的尾指针
bool
flag
=
false
;
//
标识是否完成排序
for
(
int
j
=
0
;
j
<
10
;
j
++
)
{
//
遍历每个桶
if
(
head
[
j
]
==
-
1
)
{
//
如果桶为空
,
直接跳过
continue
;
}
if
(
flag
&&
j
>
0
)
{
//
如果已经完成排序
,
且当前桶的下标大于0
,
则退出循环
break
;
}
if
(
last
!=
-
1
)
{
//
将上一个桶的尾指针指向当前桶的头指针
list
[
last
].
next
=
head
[
j
];
}
last
=
tail
[
j
];
//
更新last
if
(
!
flag
&&
j
==
9
&&
list
[
tail
[
j
]].
isEnd
)
{
//
如果当前已经排序到最高位
,
且最后一个数是最大数
,
则标识已完成排序
flag
=
true
;
}
}
list
[
last
].
next
=
-
1
;
//
将最后一个桶的尾指针指向
-
1
,
表示排序结束
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录