* C++ sortํจ์๋?
: C++STL์์ ์ ๊ณตํ๋ sort ์๊ณ ๋ฆฌ์ฆ
- ํค๋ํ์ผ: <algorithm>
- ๊ตฌ๋ฌธ: sort(start, end); //start๋ถํฐ end๊ฐ๋ฅผ ์ค๋ฆ์ฐจ์(default)๋ก ์ ๋ ฌํ๋ค.
- ๋ด๋ถ๋ Quick sort(ํต ์ ๋ ฌ)๋ก ๊ตฌํ๋์ด ์๋ค. ๋ฐ๋ผ์ ํ๊ท ์๊ฐ ๋ณต์ก๋๋ O(NlogN)์ ๊ฐ์ง๋ค.
1) ํจ์ ์ํ
template <typename T>
void sort(T start, T end);
template <typename T>
void sort(T start, T end, Compare comp);
: 3๋ฒ์งธ ์ธ์ ๊ฐ(Compare comp)์ ๋ฃ์ผ๋ฉด ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์ ๋ฑ์ผ๋ก ์ ๋ ฌํ ์ ์๋ค. compare ํจ์๋ true ์ธ ๊ฒฝ์ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค.
2) ๋ฐฐ์ด(array) ์ฌ์ฉํ ๋ ์์
sort(arr, arr+n); //๋ฐฐ์ด ์ ์ฒด๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋
sort(arr+i, arr+n); //arr[i]~arr[n]๊น์ง ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋
๋ฐฐ์ด์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ์๋์ฒ๋ผ ๋น๊ตํจ์๋ฅผ ๊ตฌํํด์ sort()ํจ์์ 3๋ฒ์งธ ์ธ์๋ก ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
#include <algorithm>
using namespace std;
bool desc(int a, int b){ //๋น๊ตํจ์ ๊ตฌํํด์ sort()ํจ์ ์ธ์๋ก ๋ฃ์ด์ฃผ๊ธฐ
return a > b;
}
int main(void){
int arr[10] = {5, 1, 3, 6, 2, 10, 4, 7, 8, 9};
sort(arr, arr+10, desc); // ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ: 10 9 8 7 6 5 4 3 2 1
return 0;
}
arr ๋ฐฐ์ด ๋ฒ์ ๋ด์ ๊ฐ๋ค์ ๋ํด descํจ์๋ฅผ ์คํํด์ true๊ฐ ๋ฐํ๋ ๋ ์ ๋ ฌ์ ์ค์ํ๊ฒ ๋ค๋ ๋ง์ด๋ค.
์ฆ, a๊ฐ b๋ณด๋ค ํด ๊ฒฝ์ฐ(true) sort๋ฅผ ์ค์ํด์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ด ๋๊ฒ๋ ํด์ค๋ค.
3) ๋ฒกํฐ(vector) ์ฌ์ฉํ ๋ ์์
sort(v.begin(), v.end()); // ๋ฒกํฐ ์ ์ฒด๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋
sort(v.begin() + i, v.end()); // v[i]~๋๊น์ง ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋
sort(v.begin(), v.end(), greater<int>()); // ๋ฒกํฐ ์ ์ฒด๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋
cf) ์ ๋ ฌ๊ด๋ จ ๋ฌธ์ ๋ค
'๐ Coding Test Study > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] 2์ฐจ์ ๋ฒกํฐ์ ์์ฑ๊ณผ ์ด๊ธฐํ / 2์ฐจ์ ๋ฒกํฐ ๋์ ํ ๋น ๋ฐฉ๋ฒ, ํฌ๊ธฐ ๊ตฌํ๊ธฐ (0) | 2021.08.05 |
---|---|
[C++][hash_map] map๊ณผ unordered_map์ ์ฐจ์ด? (0) | 2021.07.19 |
C++ ๋ฐฐ์ด/๋ฒกํฐ์ ํจ์์ ์ธ์๋ก ์ ๋ฌํ๊ณ ๋ฐ๊ธฐ (0) | 2021.04.02 |
C++ ๋์ ํ ๋น? (0) | 2021.03.27 |
C++ Template์ด๋? ์ ์ฉ ๋ฐฉ๋ฒ์? (0) | 2021.03.01 |