Merge Sort

2024. 4. 9. 13:01·CS/Data Structure
728x90
반응형

Merge Sort 

: 두 개의 sorting된 배열을 비교하여 더 작은것부터 정렬하여 전체 sorting

https://www.geeksforgeeks.org/java-program-for-merge-sort/

int sort(int a[], int n)
{
	int h;
	int b[n];
	h = n/2;
	//copy a[] to b[]
	sort(b,h); // 왼쪽 sorting
	sort(b+h, n-h); //오른쪽 sorting
	// merge two halves in b to a
	return ;
}

 

Proof of invariant

sorting의 정의 (invariant)

  • sorting이 끝난 후 배열에 저장된 값들을 b[0], b[1] …b[n-1]라고 부르자 (같은 배열이지만 구별하기 위해)
  • 조건 1 : {a[0], a[1], … a[n-1]} = {b[0], b[1] … b[n]} 집합으로 같음
  • 조건 2 : b[0] < b[1] … b[n-1] (같은 것이 없다고 가정)

(1) Base : n = 1(P(1))인 경우, 정렬 할 것이 없음 ∴ invariant 성립

(2) Step : P(n-1) → P(n)

P(n-1)이 참이라는 것은

n/2일 때 sort함수가 성립함 → 재귀 호출이 끝난 후, a[0] < a[1] ... a[n/2 -1] & a[n/2] < a[n/2 + 1] ... < a[n-1]이 참이라고 믿음

P(n)일 때, a[0] < a[1] ... < a[n-1]이 성립함 >> merge 알고리즘에 의해 부등호가 성립하는 것

* P(n-1)은 재귀 sort가 성공해서 부등호가 성립하는 것

* P(n)은 merge algorithm 때문에 부등호가 성립하는 것

∴ invariant 성립

(3) Result : invariant가 성립한다. 정렬되어있다. 

 

The Complexity

\(T(n) = n + 2T(n/2) = ... =  O(n log n)\)

\(O(n)\) : 합치는 시간

728x90
반응형

'CS > Data Structure' 카테고리의 다른 글

[ Arrays for search, insert, delete ] Packed sorted  (1) 2024.04.10
[ Arrays for search, insert, delete ] Packed unsorted  (3) 2024.04.09
Selection Sort  (1) 2024.03.30
Binary search  (2) 2024.03.29
Linear search  (0) 2024.03.26
'CS/Data Structure' 카테고리의 다른 글
  • [ Arrays for search, insert, delete ] Packed sorted
  • [ Arrays for search, insert, delete ] Packed unsorted
  • Selection Sort
  • Binary search
min_zu
min_zu
  • min_zu
    민주제도
    min_zu
  • 전체
    오늘
    어제
    • ._. (176)
      • AI (2)
        • DeepLearning (2)
        • CS231n (0)
      • Web (2)
        • ReactJS (0)
      • CS (83)
        • OS (7)
        • Data Structure (23)
        • Computer Architecture (8)
        • Computer Network (20)
        • Algorithm (25)
      • Linux (3)
        • KaliLinux (0)
        • Docker (1)
      • Hacking (83)
        • Write Up (25)
        • Pwnable (13)
        • Reversing (2)
        • Cryptography (12)
        • Web Hacking (4)
        • Window (6)
        • Network (7)
        • Web3 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    AI
    Web
    WinAFL
    OS
    Sort
    Linux
    DataStructure
    Tree
    ComputerArchitecture
    UTM
    Mac
    Search
    DeepLearning
    Graph
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
min_zu
Merge Sort
상단으로

티스토리툴바