void MergeSort(long long int L, long long int R){
if(L>=R)
return;
long long int M=(L+R)/2;
MergeSort(L, M);
MergeSort(M+1, R);
for(long long int i=L, l=L, r=M+1; r!=R+1||l!=M+1; i++){
if((r!=R+1&&l<=M&&arr[l]<arr[r])||r==R+1)
temp[i]=arr[l++];
else
temp[i]=arr[r++];
}
for(long long int i=L; i<=R; i++)
arr[i]=temp[i];
}
정렬 구현중 퀵 정렬까지 구현을 했는데 자꾸 최악의 경우 o(n^2)의 시간 복잡도가 나와서 실제로 사용하기 상당히 안 좋았다.
그래서 아에 합병 정렬이라는 새로운 방법을 찾았다.
https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html
아래 링크를 요약해서 C로 간단히 짠 것이다,.
728x90
'초기 네이버 기록 > 과거 공부 기록' 카테고리의 다른 글
이코테 구현알고리즘 예제 2번 시각 완전탐색 (C언어) (0) | 2023.01.08 |
---|---|
스택과 큐 자료구조 C로 (0) | 2023.01.08 |
도서관리 프로그램 구조체 활용버전 씹어먹는 C언어 (2) | 2023.01.07 |
도서관리 프로그램 최종본 (씹어먹는 C) (0) | 2023.01.07 |
공부기록 문자열 (씹어먹는 C언어)(scanf함수에서 띄어쓰기 해결 ,화면 출력함수 변환문자 제어문자) (0) | 2023.01.07 |