diff options
Diffstat (limited to 'reverse-merge-sort.py')
-rwxr-xr-x | reverse-merge-sort.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/reverse-merge-sort.py b/reverse-merge-sort.py new file mode 100755 index 0000000..54b6f46 --- /dev/null +++ b/reverse-merge-sort.py @@ -0,0 +1,62 @@ +#!/bin/python3 + +# ---------- REVERSE Merge Sort Algorithm +# Merge sort... but in reverse! + + +# ---------- Imported modules +import inputoutput as io +import csv +import sys + + +# ---------- Main +target = sys.argv[1] + +# ingress of data +numdata = io.ingressCSV(target) + +# merge sorting +def mergeSort(data): + if len(data) > 1: + # perition out list + middie = len(data) // 2 + leftmost = data[:middie] + ritemost = data[middie:] + + # sorting left and right recursively + mergeSort(leftmost) + mergeSort(ritemost) + + # iterator initializations + i = j = k = 0 + + # populating temporary arrays with data + while i < len(leftmost) and j < len(ritemost): + if leftmost[i] >= ritemost[j]: #FIXME: flipped around to reverse + data[k] = leftmost[i] + i += 1 + else: + data[k] = ritemost[j] + j += 1 + + k += 1 + + # cleanup for any elements left behind + while i < len(leftmost): #FIXME: do these need flipping? + data[k] = leftmost[i] + i += 1 + k += 1 + + while j < len(ritemost): + data[k] = ritemost[j] + j += 1 + k += 1 + +# calling the function +mergeSort(numdata) + +# finishing up and appending "-mergesorted" to CSV +target = target[:-4]+"-reverse-merge"+target[-4:] +print("Sorting done, writing to file!") +io.egressCSV(numdata,target) |