python 기본 알고리즘 병합 정렬(Merge sort)

0.머리말
알고리즘 의 좋 고 나 쁨 을 평가 하 는 기준:
시간 복잡 도
공간 복잡 도
1.병합 정렬 알고리즘 은 무엇 입 니까?
거품 정렬(Bubble Sort)은 병합 작업 위 에 세 워 진 효과 적 인 정렬 알고리즘 으로 John von neumann 이 1945 년 에 발명 했다.분 치 법(Divide and Conquer)의 전형 적 인 응용 을 사용 합 니 다!!규모 가 큰 정렬 문 제 를 작은 규모 로 해결 하 다.
기본적으로 다음 과 같은 두 가지 방법 을 포함한다.
위 에서 아래로 의 귀환
아래 에서 위로 의 교체
이미 있 는 질서 있 는 하위 서열 을 합 쳐 완전히 질서 있 는 하위 서열 을 얻 을 수 있 습 니 다.먼저 모든 하위 서열 의 질 서 를 얻 은 다음 에 두 개의 하위 서열 을 하나 로 통합 시 키 는 것 이다.만약 두 개의 질서 표를 하나 로 합치 면,두 개의 질서 표 가 되 고,두 개의 질서 표 가 된다.
병합 정렬 의 성능 은 입력 데이터 의 영향 을 받 지 않 습 니 다.이것 은 선택 정렬 과 같 지만 성능 은 선택 정렬 보다 좋 고 성능 은 항상 O(n log n)입 니 다.그러나 성능 의 우수 성 은 반드시 추가 메모리 공간 이 큰 대가 가 될 것 이다!
2.알고리즘 프로 세 스 도해

3.코드 구현
코드 는 다음 과 같 습 니 다(예시 01):

"""
Merge_Sort     
    Divide and Conquer
     :
"""

#         
def merge_sort(alist):
 #         1 ,      
 if len(alist) <= 1:
  return alist

 #                
 mid_index = len(alist)//2

 #             
 # left_list = alist[:mid_index]
 # right_list = alist[mid_index:]

 #     ,      
 left_list = merge_sort(alist[:mid_index])
 right_list = merge_sort(alist[mid_index:])
 return merge(left_list, right_list)

#      
def merge(left_list, right_list):
 l_index,r_index = 0,0
 merge_list = []
 #                
 while l_index < len(left_list) and r_index < len(right_list):
  #                           ,       
  if left_list[l_index] < right_list[r_index]:
   merge_list.append(left_list[l_index])
   l_index += 1
  else:
   merge_list.append(right_list[r_index])
   r_index += 1
 #         ,            ,           merge_list   
 merge_list += left_list[l_index:]
 merge_list += right_list[r_index:]
 return merge_list

if __name__ == '__main__':
 alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
 print(f'      :{alist}')
 alist = merge_sort(alist)
 print(f'            :{alist}')

안에 있 는 좌우 목록 은 모두 하나의 요소 로 나 뉘 어 져 있 습 니 다.비교 하고 추가 하 는 것 입 니 다.여러분 은 코드 를 컴 파일 러 에 넣 고 debug 가 실행 되 며 구체 적 인 과정 을 보고 동적 이미지 와 결합 하여 설명 하 는 것 이 더 좋 습 니 다!
4.평판 알고리즘
가장 좋 은 시간 복잡 도:O(n log n)최 악의 시간 복잡 도:O(n log n)평균 시간 복잡 도:O(n log n)공간 복잡 도:O(n)알고리즘 안정성:안정 적 인 정렬총결산
python 기본 알고리즘 의 병합 정렬(Merge sort)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 병합 정렬(Merge sort)내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기