阿里实习二面算法题 谁帮我看看 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 11:50
你面的哪个部门啊
点赞 回复
分享
发布于 2020-02-28 15:14
滴滴
校招火热招聘中
官网直投

相关推荐

头像
不愿透露姓名的神秘牛友
04-08 00:50
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务