【发布时间】:2022-01-05 14:44:21
【问题描述】:
我想按升序输出奇数,按降序输出偶数我的代码在这里。
当我给输入n=5数组5 2 4 3 1,我想输出1 4 2 3 5,
但我得到了输出4 2 1 3 5。我不想要数组的位置。
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; ++i)
{
cin >> arr[i];
}
// odd number ascending order
for (int i = 0; i <= n; ++i)
{
for (int j = i + 1; j < n; ++j)
{
if (arr[i] < arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < n; ++i)
{
if (arr[i] % 2 == 0)
{
cout << arr[i]<< " ";
}
}
// numbers in descending order
for (int i = 0; i <= n - 1; i++)
{
for (int j = i + 1; j <= n; j++)
{
if (arr[j] < arr[i])
{
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
if (arr[i] % 2 == 1)
{
cout << arr[i]<<" ";
}
}
return 0;
}
【问题讨论】:
-
我想按升序输出奇数,按降序输出偶数 --
std::partition然后std::sort两次。这基本上是一个 3 行 C++ 解决方案。其次,这个:cin >> n; int arr[n];不是有效的 C++。而是使用std::vector<int> arr(n);。顺便说一句——你是从那些提供可怕 C++ 示例的糟糕网站“学习”C++ 吗? -
@PaulMcKenzie 这只是一个糟糕的建议。偶数和奇数的位置不能改变。
-
可以给我孔代码,奇数按升序排列,偶数按降序排列
-
@karnanaskar "可以给我洞码升序奇数和降序偶数" 不!这不是 SO 的工作方式。请善待tour 到最后,并在此处发布问题之前通过help center 告知自己!
-
std::sort和std::partition仍然可以工作,只是代码稍微多一点。
标签: c++ arrays sorting bubble-sort function-definition