목록알고리즘/Sort(정렬) (7)
IT Language 연습실
pair에 대해 알아보자. pair는 자료형을 한 쌍의 데이터로 묶는 개념인데, 기본적으로 첫번째 데이터를 먼저 비교하고 첫번째 데이터 값이 같다면 두번째 데이터로 비교. 기본적으로 정수를 대상으로 ? 정렬 비교 한다? 즉 pair 라는 것은 int , double 이라는 두 자료형을 하나로 묶어 한 데이터라고 보는 것이다. 그럼 왼쪽에 들어오는 int 의 값이 첫번째 데이터 값이라고 first에 담긴다. double의 값이 두번째 데이터 값이라고 second에 담긴다. pair는 표준 라이브러리에 정의된 나 에 기본적으로 쓰이고 있어 둘중 하나 불러오면 된다. 또한 std namespace 로 묶여 있기 때문에 std를 명시해주거나 using 을 사용해줘야 한다. 그리고 pair도 템플릿으로 되어 있는..
버블정렬, 선택정렬, 삽입정렬, 병합정렬, 퀵정렬 들을 알아보았다. 정말 무수히 많은 정렬 알고리즘들이 있다. 후에 알고리즘들을 또 블로그에 기술하겠다. 오늘은 좀 하나의 함수를 이용해 정렬을 할 수 있게 도와주는, 표준 라이브러리의 중 에 정의되어 있는 라이브러리 함수 sort 함수를 소개하겠다. 해당 함수를 사용하기 위해 위에서 언급한 것처럼 alogrithm 을 include 시켜줘야 한다. 또한 표준 라이브러리에 묶여 있는 것중 std에 namespace 로 묶여 있으니 std:: 를 써주든 using 을 사용해줘야 한다. #include #include int main() { int num_array [] {5,19,20,30,20,10}; std::sort(num_array, num_array..
3 7 2 5 1 8 6 4 위와 같은 수가 있다. 이를 오름차순으로 정렬하는데 있어 퀵정렬을 이용하고 싶다. 퀵 정렬이란 무엇일까. 퀵정렬의 원리는 다음과 같다. 첫번째 배열 원소의 시작 주소와 마지막 배열 원소의 마지막 주소를 구하고 즉 L과 R를 구하라는 의미이다. 그런 이후 그 둘의 중간 기준점을 구한다.M 의 값을 구하란 의미이다. 위같은 경우라면 [0] 과 [7] 을 나누고 [3]을 기준으로 잡는다 기준값 왼쪽에는 기준값보다 작은 값을 두고 기준값보다 큰 값은 오른쪽에 둔다. 예를 들어 기준 값 [3]에 있는 값이 5라고 그런다면 5보다 작은 수들은 [0]~[2]에 넣겠다. 기준 값 [3]에 있는 값이 5라고 그런다면 5보다 큰 수들은 [4]~[7]에 넣겠다. 그러면 [0] 은 하나씩 증가하면..
3 5 2 4 1 이라는 위와 같은 값이 배열에 저장이 되어 있다고 보자. 위의 값을 오름차순으로 정렬하고자 하는데 이를 병합정렬을 이용하고자 한다 병합정렬이라는 것은 뭘까? 병합정렬 이걸 합병정렬이라고도 부르는데 병합정렬의 원리는 다음과 같다. 3 5 2 4 1 배열의 시작 주소와 배열의 마지막 주소를 구하고 배열의 시작 주소는 L(left) 로 배열의 마지막 주소를 R (right) 주소에 담은뒤 두 수를 나눠 중간 값을 구한다. 그것을 M(mid) 값에 담는다. 그럼 그 M 값을 기준으로 하나의 배열을 두개의 배열로 분리한다. 3 5 2 배열의 시작 주소는 L은 그대로 배열의 마지막 주소는 곧 M 중간값이 되고 그렇게 또 두 수를 나누어 중간 값을 구하고 또 그렇게 구한 중간 값을 기준으로 배열을 ..