阿里实习二面算法题 谁帮我看看 C++

阿里面试的算法题,这个是堆排序吗,谁能讲一讲。改进的堆排序吗?看半天没有很明白。

void SubProc(int a[], int s, int m)
{
//s是当前节点的位置,m是数组长度
int rc, j;
rc = a[s];
for (int j = (s << 1) + 1; j < m; j <<= 1)
{
if (j + 1 < m&&a[j] < a[j + 1]) j++;
if (rc > a[j]) break;
a[s] = a[j];
s = j;
}
a[s] = rc;
}

void MainProc(int a[], int n)
{
for (auto i = (n >> 1) - 1; i >= 0; i--)
SubProc(a, i, n);

for (auto i = n - 1; i >= 0; i--)
{
auto temp = a[0];
a[0] = a[i];
a[i] = temp;
SubProc(a, 0, i);
}
}

#阿里巴巴#
全部评论
你面的哪个部门啊
点赞 回复 分享
发布于 2020-02-28 15:14
这就是堆排序啊
点赞 回复 分享
发布于 2020-02-28 11:50

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务