按升序排列2d数组中的数字,然后在1d中显示它
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按升序排列2d数组中的数字,然后在1d中显示它相关的知识,希望对你有一定的参考价值。
所以我的任务是取20个数字,将其放入4 x 5数组中,然后按升序对其进行排序,然后将其输出为1d数组。到目前为止,我的代码只是将2d更改为1d,但还不能对其进行排序。
#include <iostream>
using namespace std;
int main()
const int SIZE = 20;
const int ROW = 4;
const int COLUMN = 5;
int numbers[ROW][COLUMN] = 16, 22, 99, 4, 18, -254, 4, 101,
5, 98, 105, 6, 15, 2, 45, 33, 88, 72, 16, 3 ;
int sort[SIZE] = ;
for (int i = 0; i < ROW; i++)
for (int j = 0; j < COLUMN; j++)
sort[i] = numbers[i][j];
cout << sort[i] << endl;
return (0);
答案
这是一个很好的例子,为什么永远不使用using namespace std;
。您正在使用名称为sort
的变量,而我们想使用sort
函数。因此,请永远不要使用using namespace std;
下一个。您可以使用算法库中的std::sort
。由于您的C样式数组作为连续字节存储在内存中,因此我们可以通过指针对其进行访问。
请参阅:
#include <iostream>
#include <algorithm>
int main()
constexpr size_t SIZE = 20;
constexpr size_t ROW = 4;
constexpr size_t COLUMN = 5;
int numbers[ROW][COLUMN]
16, 22, 99, 4, 18,
-254, 4, 101, 5, 98,
105, 6, 15, 2, 45,
33, 88, 72, 16, 3
;
int sort[SIZE];
int *num = reinterpret_cast<int*>(numbers);
std::sort(num, num+SIZE);
for (int i = 0; i < ROW; i++)
for (int j = 0; j < COLUMN; j++)
sort[i] = numbers[i][j];
std::cout << sort[i] << std::endl;
return (0);
以上是关于按升序排列2d数组中的数字,然后在1d中显示它的主要内容,如果未能解决你的问题,请参考以下文章
2021-09-26:搜索旋转排序数组。整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了