【Sorting & Sets】排序Introduction to Sorting
本文介绍了C++中的常用排序方法。对于静态数组,使用sort(arr, arr+N)进行排序;动态数组则使用sort(v.begin(), v.end())。排序支持子区间操作,如sort(arr+1, arr+4)。对于pair和tuple类型,默认按第一个元素升序排列,第一个元素相同时比较第二个元素。C++标准库的排序函数高效可靠,是优先选择的方法。
文章目录
Sorting Methods-排序方法
资料-Resources
Library Sorting-库排序
虽然通常你不需要了解排序算法的具体实现,但是你必须会使用内置排序方法,因为它们既高效又可靠。在 C++ 中,标准库已经提供了多种排序函数,你只需要调用即可,而不必手动实现复杂算法。
资料-Resources
Static Arrays-静态数组
要对静态数组进行排序,可以使用 sort(arr, arr + N),其中  N N N 是需要排序的元素个数。你也可以通过替换  a r r arr arr 和  a r r + N arr + N arr+N 来指定排序的子区间。例如:sort(arr + 1, arr + 4,将会排序索引区间  [ 1 , 4 ) [1, 4) [1,4) 的元素,即 arr[1], arr[2], arr[3]。
#include <bits/stdc++.h>
using namespace std;
int main() {
	int arr[] = {5, 1, 3, 2, 4};
	int N = 5;
	sort(arr, arr + N);
	for (int i = 0; i < N; i++) cout << arr[i] << " ";  // 1 2 3 4 5
	cout << endl;
	int arr2[] = {5, 1, 3, 2, 4};
	sort(arr2 + 1, arr2 + 4);
	for (int i = 0; i < N; i++) cout << arr2[i] << " ";  // 5 1 2 3 4
}
Dynamic Arrays-动态数组
要对动态数组(如  v e c t o r vector vector)进行排序,可以使用:sort(v.begin(), v.end()); 或者 sort(begin(v), end(v)); 。默认情况下, s o r t sort sort 会将数组按升序排列。
同样,你也可以指定排序的子区间。例如:sort(v.begin() + 1, v.begin() + 4); 这将排序索引区间  [ 1 , 4 ) [1, 4) [1,4) 的元素,即  v [ 1 ] , v [ 2 ] , v [ 3 ] v[1], v[2], v[3] v[1],v[2],v[3]。
#include <bits/stdc++.h>
using namespace std;
int main() {
	vector<int> v{5, 1, 3, 2, 4};
	sort(v.begin(), v.end());
	// Outputs 1 2 3 4 5
	for (int i : v) { cout << i << " "; }
	cout << endl;
	v = {5, 1, 3, 2, 4};
	sort(v.begin() + 1, v.begin() + 4);
	// Outputs 5 1 2 3 4
	for (int i : v) { cout << i << " "; }
	cout << endl;
}
(Dynamic) Arrays of Pairs & Tuples-成对或元组数组排序
在 C++ 中,默认情况下:
- 
  p a i r pair pair 会先按照 第一个元素 f i r s t first first 排序 
- 
  如果第一个元素相等,则按照 第二个元素 s e c o n d second second 排序 
#include <bits/stdc++.h>
using namespace std;
int main() {
	vector<pair<int, int>> v{{1, 5}, {2, 3}, {1, 2}};
	sort(v.begin(), v.end());
	/*
	 * Outputs:
	 * 1 2
	 * 1 5
	 * 2 3
	 */
	for (pair<int, int> p : v) { cout << p.first << " " << p.second << endl; }
}
在 C + + C++ C++ 中, t u p l e tuple tuple 的排序规则与 pair 类似:
- 
  先按第一个元素排序 
- 
  如果第一个元素相等,则按第二个元素排序 
- 
  依次类推,按顺序比较后续元素 
更多推荐
 
 


所有评论(0)