Пример #1
0
# 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())

Пример #2
0
# 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())

Пример #3
0
# 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())
Пример #4
0
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())

Пример #5
0
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())