교환정렬 알고리즘

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)
    
= 5
= [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