I'm very new to python, however not new to programming as I've been doing C for some time.
So here is my practice of a merge sort, I looked at other questions however they were many more lines compared to mine. Which leaves me to believe I'm doing something wrong.
I come here to look for best practices in python, and I mean the best of the best. I want to know all the little details! Most importantly if there is anyway to shorten code without sacrificing efficiency.
#!/usr/bin/python def merge_sort(array): ret =  if( len(array) == 1): return array; half = len(array) / 2 lower = merge_sort(array[:half]) upper = merge_sort(array[half:]) lower_len = len(lower) upper_len = len(upper) i = 0 j = 0 while i != lower_len or j != upper_len: if( i != lower_len and (j == upper_len or lower[i] < upper[j])): ret.append(lower[i]) i += 1 else: ret.append(upper[j]) j += 1 return ret array = [4, 2, 3, 8, 8, 43, 6,1, 0] ar = merge_sort(array) print " ".join(str(x) for x in ar) #>>> 0 1 2 3 4 6 8 8 43