# randomly ordered array - uses ~N^2/4 compares and ~N^2/4 exchanges # worst - ~N^2/2 compares and ~N^2/2 exchanges # best - N-1 compares and 0 exchange, best sorting method for sorted array among other methods import sortbase def insertion_sort(dataList): for i in xrange(1, len(dataList)): for j in xrange(i, 0, -1): if dataList[j] < dataList[j-1]: dataList[j], dataList[j-1] = dataList[j-1], dataList[j] return dataList if __name__ == '__main__': print insertion_sort(sortbase.getDataList())
# uses ~N^2/2 compares and N exchanges to sort an array of length N import sortbase def selection_sort(dataList): for i in xrange(0, len(dataList)): k = i for j in xrange(i+1, len(dataList)): if dataList[j] < dataList[k]: k = j if k != i: dataList[i], dataList[k] = dataList[k], dataList[i] return dataList if __name__ == '__main__': print selection_sort(sortbase.getDataList())
# randomly ordered array - uses ~N^2/4 compares and ~N^2/4 exchanges # worst - ~N^2/2 compares and ~N^2/2 exchanges # best - N-1 compares and 0 exchange, best sorting method for sorted array among other methods import sortbase def insertion_sort(dataList): for i in xrange(1, len(dataList)): for j in xrange(i, 0, -1): if dataList[j] < dataList[j - 1]: dataList[j], dataList[j - 1] = dataList[j - 1], dataList[j] return dataList if __name__ == '__main__': print insertion_sort(sortbase.getDataList())
import sortbase def shell_sort(dataList): N = len(dataList) h = 1 while h < N/3: h = 3*h + 1 # 1, 4, 13, 40, 121, 364, 1093, ... while h >= 1: # h-sort the array for i in xrange(h, N): # insert a[i] amont a[i-h], a[i-2*h], a[i-3*h] ... for j in xrange(i, h-1, -h): if dataList[j] < dataList[j-h]: dataList[j], dataList[j-h] = dataList[j-h], dataList[j] h /= 3 return dataList if __name__ == '__main__': print shell_sort(sortbase.getDataList())
import sortbase def shell_sort(dataList): N = len(dataList) h = 1 while h < N / 3: h = 3 * h + 1 # 1, 4, 13, 40, 121, 364, 1093, ... while h >= 1: # h-sort the array for i in xrange(h, N): # insert a[i] amont a[i-h], a[i-2*h], a[i-3*h] ... for j in xrange(i, h - 1, -h): if dataList[j] < dataList[j - h]: dataList[j], dataList[j - h] = dataList[j - h], dataList[j] h /= 3 return dataList if __name__ == '__main__': print shell_sort(sortbase.getDataList())