2019. 1. 20. 22:22ㆍ개발노트
교환정렬, 말 그대로 교환과 정렬을 하는 알고리즘 입니다.
정렬을 하기위해 배열의 요소를 교환합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def exchange (n, S=[]): for i in range(n): j = i+1 for j in range (n): if (S[j] < S[i]): temp = S[i] S[i] = S[j] S[j] = temp print(S) n = 5 S = [1,3,2,6,7] exchange(n, S) | cs |
배열의 요소개수가 5개이기 때문에 n을 5라고 했습니다.
len(S)를 해도 되겠죠?
exchange(n, S) 로 매개변수의 값을 넘겨줍니다.
exchange함수에서 매개변수를 전달 받은 후
for문과 조건문을 거쳐 오름차순으로 정렬된 배열이 만들어집니다.
(if문의 부등호에 따라서 오름차순, 내림차순이 바뀌게 됩니다.)
아래와 같은 순서로 교환됩니다.
i와 j는 배열의 인덱스 값과 같습니다.
i가 1일 때 j 는 i + 1 이므로 2 입니다.
if문에서는 S[j] < S[i] 를 조건으로 하고
j가 for문을 돌기 때문에 다음과 같이 비교합니다.
3 < 1 ?
2 < 1 ?
6 < 1 ?
7 < 1 ?
조건과 다르기 때문에 if문에 걸리지 않습니다.
j for문을 빠져나와 i for문으로 가서 i를 1만큼 증가시킵니다.
i가 2 이므로 j는 3입니다.
j 가 for문을 돌며 1씩 증가합니다.
2 < 3 ? - 걸렸습니다.
if문에 걸리면 temp 라는 빈 공간에 S[i] 값을 넣고
S[i]와 S[j]의 값을 바꾸고 S[j]에 temp에 넣었던 S[i]의 값을 넣어줍니다.
현재 배열은 [1, 2, 3, 6, 7] 입니다.
프로그램에서는 for문을 계속 돌겠지만 어차피 오름차순으로
정렬되었기 때문에 여기까지 -
깃허브
https://github.com/Yeowoolee/PhytonAlgorithm