시간에 따라 기본 정렬 알고리즘의 복잡성 분류
O (n ^ 2)
버블 정렬
삽입 정렬
선택 정렬
Q는 (N 로그 n)
분할 통치
빠른 정렬
일종의 병합
버블 정렬
두 인접하는 요소의 비교가 추진 다수 후, 트래버스 전체 목록 후 목록의 최대 버블 끝에 항목 I에 배치된다.
라이트 버블 정렬의 예를 다음
DEF 버블 (SL)
"" "
거품 정렬, O (N ^ 2)
트래버스 후에 두 개의 인접한 소자 큰 푸쉬 전체에서의 비교는 상기 아이템리스트의 말미에 최대 버블 링 방식으로 배치된다
: PARAM의 SL : 목록
:반환:
"" "
대 전 범위 (LEN (SL) -1)
범위 J (I + 1, 렌 (SL))의 경우 :
경우에 SL [I]> SL [J] :
SL [i]는, SL [J]를 SL = [J] SL [i]를
반환 SL
거품 정렬의 다음 예시적인 최적화 된 버전
데프 bubble_sort (항목) :
"" "
버블 정렬은, 또는 while 루프는 for 루프에 더 익숙하다 달라
바람직하게는, O (N)
최악 O (N ^ 2)
"" "
items_len = LEN (항목)
I에 대한 범위 (1 items_len)
has_swap = 거짓
범위 J (1, items_len)
항목 [J - 1]의 경우> 항목 [J] :
has_swap = TRUE
항목 [J - 1] 항목 [J] = 항목 [J] 항목 [J - 1]
하지 has_swap 경우 :
단절
항목을 반환
삽입 정렬
두 번째 숫자는 좋은 위해 트럼프의 동일한 서열로 삽입하는 위치를 찾는 시작 전방으로부터 순서에 대응한다.
데프 insert_sort_for (항목) :
"" "
삽입 정렬, 루프, 중간 또는 쉽게 루프가 이해하기 동안 :
가 삽입 된 위치까지 큰 삽입 노르웨이의 수의 값보다 이동 할 필요가 없습니다.
: PARAM 항목 : 무석 (无锡) 부인과 검사 얼마나 많은 돈을 http://www.csyhjlyy.com/
:반환:
"" "
I에 대한 범위 (1, LEN (항목)) :
이 항목 item_insert = [I]
J = I - 1
반면 J> = 0 :
item_insert 경우 <항목 [J] :
항목 [J + 1] 항목 [J] # 삽입하는 요소의 값보다 큰 경우, 후방 움직임 =
J - 1 =
다른 사람 : # 루프 밖으로 이동 할 필요가 없습니다
단절
항목 [J + 1] = # item_insert 삽입 위치 발견
항목을 반환
선택 정렬
위치가 가장 작은 항목입니다 결정하는 각 항목을 나열, 가장 작은 항목의 위치를 찾을 수, 전체 목록을 검색 할 수 있습니다.
데프 select_sort (항목) :
"" "
분류 선택 전체 목록을 검색, 작은 항목의 위치를 찾을 수
"" "
전 범위 (LEN (항목) -1)의 경우 :
I = min_index
범위에 대해 J (I + 1 (항목) 렌)
만약 아이템 [J] <항목 [min_index]
J = min_index
min_index 경우 = 내가! :
항목 [min_index] 항목 [I] = 항목 [I] 항목 [min_index]
항목을 반환