0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[tips][cpp] 昇順・降順sort

Last updated at Posted at 2024-10-12

Sort/Reverse

これを書いておく。

#define all(a) a.begin(), a.end()
#define reverse_all(a) a.rbegin(), a.rend()

降順ソート

数値

vector<int> a = {4, 2, 3, 1, 5};

reverse(all(a));
for (int i = 0; i < 5; i++) {
  cout << a[i] << " ";
}

output

5 4 3 2 1 

or

vector<int> a = {4, 2, 3, 1, 5};

sort(reverse_all(a));
for (int i = 0; i < 5; i++) {
  cout << a[i] << " ";
}

output

5 4 3 2 1 

文字列

string str = "abcdefg";
reverse(all(str));
cout << str << std::endl;
gfedcba

pair型

reverseはただ配列の順序を逆順にする。

vector<pair<int, int>> a = {make_pair(3,1), make_pair(4,2), make_pair(2,3)};
reverse(all(a));
for(pair<int, int> v:a){
  cout << v.first << " " << v.second << endl;
}

このように、第一要素が降順にならないので。
output

2 3
4 2
3 1

第一要素を降順にしたい場合は、sortしてからreverseする。

vector<pair<int, int>> b = {make_pair(3,1), make_pair(4,2), make_pair(2,3)};

// sortして第一要素を昇順にする!!!
sort(all(b));
// 順序を逆にする
reverse(all(b));
for(pair<int, int> v:b){
  cout << v.first << " " << v.second << endl;
}

第一要素が降順になった。めでたし。

output

4 2
3 1
2 3

昇順ソート

vector<int> a = {4, 2, 3, 1, 5};

sort(all(a));
for (int i = 0; i < 5; i++) {
  cout << a[i] << " ";
}

output

1 2 3 4 5

pair型の場合は一つ目の値を基準にsortされる。(一つ目の値が同じであった場合は、二つ目の値を基準にsortされる。)

vector<int> a = {make_pair(3,7), make_pair(2,8), make_pair(1,2)};

sort(all(a));
for(pair<int, int> v:a){
  cout << v.first << " ";
}

output

1 2 3

参考

sort - cpprefjp C++日本語リファレンス
rbegin - cpprefjp C++日本語リファレンス

ABC222 C - Swiss-System Tournament
ABC219 C - Neo-lexicographic Ordering

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?