按行主顺序对给定矩阵进行C++排序

Sorting a given matrix in C++ in row major order

本文关键字:排序 C++ 顺序      更新时间:2023-10-16
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