按行主顺序对给定矩阵进行C++排序
Sorting a given matrix in C++ in row major order
void sortAllWay(int arr[][N])
{
// Consider matrix elements (in row major
// order) and sort the sequence.
int *ptr = (int*) arr;
sort(ptr, ptr + N * N);
}
这段代码到底有什么作用?
我们给它传递了一个数组,它已经被排序了。我已经对数组进行了排序,例如sort(arr, arr + n)
其中n
是数组的大小。然而,这对我来说没有多大意义。
这只是
一个为数组调用真实std::sort
函数的函数。对于数组std::sort
函数获取指向数组第一个元素的指针和指向数组末尾的指针(紧跟在最后一个元素之后)。
由于静态分配的二维数组作为单个序列存储在内存中,因此您可以通过递增指针ptr
来迭代它,直到它达到ptr+N*N
。
int *ptr = (int *)arr;
- 指向第一个元素的指针
ptr+N*N
- 指向数组末尾的指针(紧跟在最后一个元素之后)
sort(arr, arr + n)
是STL中的算法,它对数组中的元素进行排序
排序算法的简单演示
int arr[] = {1, 5, 8, 9, 6, 7, 3, 4, 2, 0};
int n = sizeof(arr)/sizeof(arr[0]);
sort(arr, arr+n);
cout << "nArray after sorting using default sort is : n";
for (int i = 0; i < n; ++i)
cout << arr[i] << " ";
输出:
使用默认排序排序后的数组为:
0 1 2 3 4 5 6 7 8 9
所以默认情况下,
sort() 按升序对数组进行排序。
点击 此链接 并研究它 .
排序算法 STL
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- clang格式:禁用排序包含
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 试图在c++中对数字列表进行排序
- 如何在C++中对数组进行冒泡排序