U E D R , A S I H C RSS

STL/sort

sort

  • μš°λ¦¬λŠ” ν”„λ‘œκ·Έλž¨ 첨 λ°°μšΈλ•Œ sort μ§œλŠ”κ±Έ 많이 ν•œλ‹€. μˆ˜ν–‰μ‹œκ°„μ΄ ΞΈ(n*n)μ΄λ‚˜ λ˜λŠ” μ†ŒνŠΈλ₯Ό 짜곀 ν–ˆλ‹€.
  • STLμ—μ„œλŠ” Quick Sortλ₯Ό μ•½κ°„ λ³€ν˜•ν•œ Sort μ•Œκ³ λ¦¬μ¦˜μ„ μ œκ³΅ν•œλ‹€.
  • 예제λ₯Ό 보자.

~cpp 
#include <iostream>
#include <vector>
#include <algorithm>	// sort μ•Œκ³ λ¦¬μ¦˜ μ“°κΈ° μœ„ν•œκ²ƒ
#include <functional>	// less, greater μ“°κΈ° μœ„ν•œκ²ƒ
using namespace std;

typedef vector<int>::iterator VIIT;	

int main()
{
	int ar[10] = {45,12,76,43,75,32,85,32,19,98};	

	vector<int> v(&ar[0], &ar[10]);		

	sort(v.begin(), v.end(), less<int>());	// μ˜€λ¦„μ°¨μˆœ

	for(VIIT it = v.begin() ; it != v.end(); ++it)	
		cout << *it << endl;

	cout << endl;

	sort(v.begin(), v.end(), greater<int>());	// λ‚΄λ¦Όμ°¨μˆœ

	for(VIIT it = v.begin() ; it != v.end(); ++it)	
		cout << *it << endl;

	// κ°„λ‹¨ν•˜κ²Œ μ˜€λ¦„μ°¨μˆœ μ“Έκ±°λ©΄ <functional> μ—†μ• κ³  sort(v.begin(), v.end()) ν•˜λ©΄ λœλ‹€.

	return 0;
}
  • STL의 이런 νŽΈλ¦¬ν•¨μ€ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 자료ꡬ쑰 λ§Œλ“œλŠλΌ μ• μ“°λŠ” μ‹œκ°„μ„ μ•Œκ³ λ¦¬μ¦˜μ„ μƒκ°ν•˜λŠ” μ‹œκ°„μœΌλ‘œ 돌렀μ€λ‹€.
  • ν•œκ°€μ§€ μ£Όμ˜ν• μ . 이 sortμ•Œκ³ λ¦¬μ¦˜μ€ μ»¨ν…Œμ΄λ„ˆκ°€ μž„μ˜ μ ‘κ·Ό(Random Access)을 ν—ˆμš©ν•œλ‹€λŠ” κ°€μ •ν•˜μ— λ§Œλ“ κ²ƒμ΄λ‹€. vectorλ‚˜ deque처럼 μž„μ˜ 접근을 ν—ˆμš©ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆλŠ” 이걸 μ“Έμˆ˜ μžˆμ§€λ§Œ. listλŠ” μž„μ˜ 접근이 λΆˆκ°€λŠ₯ν•΄μ„œ μ‚¬μš©ν• μˆ˜ μ—†λ‹€. -l5 이런 접근이 μ•ˆλœλ‹€λŠ” 의미 - λ”°λΌμ„œ listμ—μ„œλŠ” μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ sortλ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•΄ μ€λ‹€.
----
STL
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:27:58
Processing time 0.0080 sec