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

时间:2019-01-11 05:49:28

标签: c++ arrays

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是数组的大小。但这对我来说没有多大意义。

2 个答案:

答案 0 :(得分:1)

那只是一个为您的数组调用真正的std::sort函数的函数。 对于数组,std::sort函数将获得指向数组第一个元素的指针和指向数组末尾的指针(位于最后一个元素之后)。

由于静态分配的二维数组作为单个序列存储在内存中,因此您可以通过递增指针ptr直到它到达ptr+N*N来对其进行迭代。

int *ptr = (int *)arr;-指向第一个元素的指针

ptr+N*N-指向数组末尾的指针(紧接在最后一个元素之后)

答案 1 :(得分:0)

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()以升序对数组进行排序。

点击此链接并进行研究。

Sort algorithm STL