ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 교환정렬 알고리즘
    개발노트 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


    댓글

Designed by Tistory.