繁体   English   中英

按行主要顺序在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)例如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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM