줘이리의 인생적기

C++ - sort 본문

공부/C++ STL

C++ - sort

줘이리 2020. 7. 28. 08:00
728x90

sort 알고리즘은 오름차순, 내림차순, 사용자가 정의한 순서로 정렬해주는 알고리즘.

default는 오름차순, 평균 시간복잡도는 퀵 정렬 기반이라 n*logn.

 

sort 알고리즘은 <algorithm> 헤더파일 안에 있음

#include <algorithm>

을 추가해야 한다.

 

원형

#array
sort(array, array+n);		//default 오름차순
sort(array, array+n, 함수);

#vector
sort(vector<자료형>.begin(), vector<자료형>.end());                    // default 오름차순
sort(vector<자료형>.begin(), vector<자료형>.end(), less<자료형>());    //오름차순
sort(vector<자료형>.begin(), vector<자료형>.end(), greater<자료형>()); //내림차순
sort(vector<자료형>.begin(), vector<자료형>.end(), 함수);

 

연습1) array- 오름차순(default)

#include<iostream>
#include<algorithm>
using namespace std;

int main(void){
	int arr[10]={2,6,3,4,0,1,9,5,8,7};
	cout << "정렬 전 : ";
	for(int i =0; i<10 ;i++){
    	cout << arr[i] << ' ';
	}
	cout << endl;
	
	sort(arr, arr+10);
	cout << "정렬 후 : ";
	for(int i =0; i<10 ;i++){
    	cout << arr[i] << ' ';
	}
		
	return 0;
}

연습2) array- 내림차순

#include<iostream>
#include<algorithm>
using namespace std;

bool Descending(int a, int b){
	return a>b;
}

int main(void){
	int arr[10]={2,6,3,4,0,1,9,5,8,7};
	cout << "정렬 전 : ";
	for(int i =0; i<10 ;i++){
    	cout << arr[i] << ' ';
	}
	cout << endl;
	
	sort(arr, arr+10, Descending);
	cout << "정렬 후 : ";
	for(int i =0; i<10 ;i++){
    	cout << arr[i] << ' ';
	}
		
	return 0;
}

연습3) vector - 오름차순(default)

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int main(void){
	vector<int> vec= {2, 6, 3, 4, 0, 1, 9, 5, 8, 7};
	cout << "befor sort: ";
	for(int i =0; i<10 ;i++){
    	cout << vec[i] << ' ';
	}
	cout << endl;
	
	sort(vec.begin(), vec.end());
	cout << "after sort : ";
	for(int i =0; i<10 ;i++){
    	cout << vec[i] << ' ';
	}
		
	return 0;
}

 

연습4) vector - 오름차순(less)

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int main(void){
	vector<int> vec= {2, 6, 3, 4, 0, 1, 9, 5, 8, 7};
	cout << "befor sort: ";
	for(int i =0; i<10 ;i++){
    	cout << vec[i] << ' ';
	}
	cout << endl;
	
	sort(vec.begin(), vec.end(), less<int>());
	cout << "after sort : ";
	for(int i =0; i<10 ;i++){
    	cout << vec[i] << ' ';
	}
		
	return 0;
}

 

연습5) vector - 내림차순(greater)

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int main(void){
	vector<int> vec= {2, 6, 3, 4, 0, 1, 9, 5, 8, 7};
	cout << "befor sort: ";
	for(int i =0; i<10 ;i++){
    	cout << vec[i] << ' ';
	}
	cout << endl;
	
	sort(vec.begin(), vec.end(), greater<int>());
	cout << "after sort : ";
	for(int i =0; i<10 ;i++){
    	cout << vec[i] << ' ';
	}
		
	return 0;
}

연습5) vector - 내림차순(함수)

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

bool Descending(int a, int b){
	return a>b;
}

int main(void){
	vector<int> vec= {2, 6, 3, 4, 0, 1, 9, 5, 8, 7};
	cout << "befor sort: ";
	for(int i =0; i<10 ;i++){
    	cout << vec[i] << ' ';
	}
	cout << endl;
	
	sort(vec.begin(), vec.end(), Descending);
	cout << "after sort : ";
	for(int i =0; i<10 ;i++){
    	cout << vec[i] << ' ';
	}
		
	return 0;
}

 

'공부 > C++ STL' 카테고리의 다른 글

C++ - vector  (0) 2020.06.23