Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
merge sort
#1
This one always blows my mind

def merge(left, right):
    combined, left_index, right_index = [], 0, 0
    while left_index < len(left) and right_index < len(right):
        if left[left_index] < right[right_index]:
            combined.append(left[left_index])
            left_index += 1
            continue
        combined.append(right[right_index])
        right_index += 1
    combined += left[left_index:] + right[right_index:]
    return combined


def merge_sort(current):
    if len(current) < 2:
        return current

    m = int(len(current)/2)
    return merge(merge_sort(current[:m]), merge_sort(current[m:]))


if __name__ == '__main__':
    print(merge_sort([8, 6, 3, 0, 4, 5, 3, 9, 2]))
Reply


Messages In This Thread
merge sort - by rootVIII - Jan-15-2020, 04:22 AM
RE: merge sort - by Gribouillis - Jan-15-2020, 08:21 AM
RE: merge sort - by perfringo - Jan-15-2020, 09:18 AM
RE: merge sort - by rootVIII - Jan-16-2020, 01:27 AM
RE: merge sort - by Gribouillis - Jan-16-2020, 06:27 AM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020