无法将数组传递给排序函数(需要对列进行排序,而不是对行进行排序)
Can't pass array to a sorting function(need to sort columns, not rows)
我需要使用选择排序来对二维数组进行排序。问题是我需要对数组的列进行排序,而不是行。这是我分配二维数组的方式(显示结构(:
int** array = new int*[rows];
for (int i = 0; i < rows; i++) {
array[i] = new int[columns];
}
然后我在其中添加了一些项目。这是我的排序功能:
void selectionSort(int* arr, int n)
{
int i, j, min_idx;
for (i = 0; i < n; i++)
{
min_idx = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
swap(&arr[min_idx], &arr[i]);
}
}
我没有指定互换,因为它是不言自明的。
因此,我需要对矩阵的每一列进行分类。例如:
输入:
5 3 1
2 0 9
4 2 6
输出:
2 0 1
4 2 6
5 3 9
关于如何做的任何想法?现在,我对矩阵进行了两次矩阵,并且在换位之间进行排序,但是我认为这不是一个好选择,因为它的慢速。
template <typename F>
void selectionSort(F f, int size)
{
for (int i = 0; i < size; i++)
{
int min_idx = i;
for (int j = i + 1; j < size; j++)
if (f(j) < f(min_idx))
min_idx = j;
swap(f(min_idx), f(i));
}
}
所以,在一个维度上,您有旧的:
selectionSort([arr](int i) -> int&{ return arr[i]; }, n);
和列:
selectionSort([arr, j](int i) -> int&{ return arr[i][j]; }, n);
相关文章:
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 合并排序不排序自创建数组类 c++
- 带有枚举方向/类型的气泡排序结构数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- 排序并行数组
- 如何在数组 c++ 中对字符串进行排序
- 为什么在此排序算法实现中,向量明显比数组慢?
- 如何对不在数组中的变量进行排序?
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 按字母顺序对结构内数组变量中的名称进行排序
- 使用排序函数 c++ 对字符数组进行排序
- 使用 std::sort 对二维 c 数组进行排序
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 使用 std::sort 对 C 样式的 2D 数组进行部分排序
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 对 0 、1 和 2 的数组进行排序