Algorithm(알고리즘)/Divide and Conquer

2) 합병 정렬 알고리즘 merge함수

고로케 2021. 5. 14.
반응형

2. 합병 정렬 알고리즘 merge함수

(1) 풀이-1

def merge(list1, list2):
    new = []
    while 1:
        if list1 == [] or list2 == []:
            new += list1 + list2
            break
        elif list1[0] < list2[0]:
            new.append(list1.pop(0))
        elif list1[0] > list2[0]:
            new.append(list2.pop(0))

    return new

(2) 풀이-2

def merge(list1, list2):
    merged_list = []
    i = 0
    j = 0
    while i < len(list1) and j < len(list2):
        if list1[i] < list2[j]:
            merged_list.append(list1[i])
            i += 1
        else:
            merged_list.append(list2[j])
            j += 1
    merged_list = merged_list + list1[i:] + list2[j:]

    return merged_list

 

#테스트
print(merge([1], []))
print(merge([], [1]))
print(merge([2], [1]))
print(merge([1, 2, 3, 4], [5, 6, 7, 8]))
print(merge([5, 6, 7, 8], [1, 2, 3, 4]))
print(merge([4, 7, 8, 9], [1, 3, 6, 10]))

 

#결과
[1]
[1]
[1, 2]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 3, 4, 6, 7, 8, 9, 10]



풀이 -1



풀이 -2

반응형

댓글