关注
新的代码
#include <iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;
inline void swap(int& a, int& b) { a ^= b ^= a ^= b; }
void HeapAdjust(int* heap, int idx, int length) {
for (int i = 2 * idx + 1;i < length;i = 2 * idx + 1) {
if (i + 1 < length&&heap[i] < heap[i + 1])i++;
if (heap[idx] > heap[i])break;
swap(heap[idx], heap[i]);
idx = i;
}
}
int main(int argc, const char* argv[]) {
ios::sync_with_stdio(false);
int N;
cin >> N;
int ini[100], mid[100];
for (int i = 0;i < N;i++)cin >> ini[i];
for (int i = 0;i < N;i++)cin >> mid[i];
int same = N - 1;
while (ini[same] == mid[same])same--;
bool isInsert = true;
for (int i = 0;i<same;i++)
if (mid[i] > mid[i + 1]) {
isInsert = false;
break;
}
if (isInsert) {
cout << "Insertion sort\n";
int target = mid[++same];
int i = 0;
while (mid[i] < target)i++;
while (same != i)swap(mid[same], mid[same - 1]), same--;
}
else {
cout << "Heap sort\n";
int length = N - 1;
while (mid[length] > mid[0])length--;
swap(mid[length], mid[0]);
HeapAdjust(mid, 0, length);
}
for (int i = 0;i < N-1;i++)cout << mid[i]<<" ";
cout << mid[N - 1];
return 0;
}
其实就是HeapAdjust(mid, 0, length+1)改成了
HeapAdjust(mid, 0, length)
然后PAT官网上的测试用例是
我这边本地的测试结果是
本地和在线唯一的区别就是本地多一个system("pause"),输出多最后换了一行 就这2个区别
两个平台都说答案错误应该是代码有问题?本人才疏学浅 看不出代码的问题 请指教
查看原帖
点赞 评论
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
04-15 23:42
中山大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的求职总结 #
18195次浏览 350人参与
# 辞职之后最想做的一件事 #
9238次浏览 146人参与
# 毕业季,给职场新人一些建议 #
16006次浏览 283人参与
# 我的工作日记 #
94445次浏览 1249人参与
# 我的实习日记 #
2425833次浏览 25323人参与
# 晒一晒你收到的礼盒 #
60935次浏览 366人参与
# 选offer应该考虑哪些因素 #
14027次浏览 226人参与
# 第一份工作应该只看薪资吗 #
137888次浏览 1454人参与
# 牛客十周岁生日快乐 #
129009次浏览 1515人参与
# 你怀疑过自己的专业选择吗? #
17057次浏览 201人参与
# 在国企工作的人,躺平了吗? #
327063次浏览 3840人参与
# 你想留在一线还是回老家? #
37069次浏览 445人参与
# 为了秋招你都做了哪些准备? #
10253次浏览 150人参与
# 秋招想进国企该如何准备 #
57239次浏览 370人参与
# 你小时候最想从事什么职业 #
90793次浏览 1698人参与
# 你们公司哪个部门最累? #
15177次浏览 130人参与
# 工作后会跟朋友渐行渐远吗 #
21027次浏览 167人参与
# 速腾聚创求职进展汇总 #
30528次浏览 229人参与
# 产品实习,你更倾向大公司or小公司 #
146386次浏览 1909人参与
# 薪资爆料 #
102678次浏览 1042人参与