Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- def bubblesort(s):
- tosort = list(s)
- changes_made = False
- for x in range(len(tosort)):
- for i, element in enumerate(tosort):
- try:
- if tosort[i] > tosort[i+1]:
- tosort[i], tosort[i+1] = tosort[i+1], tosort[i]
- changes_made = True
- except IndexError:
- continue
- if not changes_made: return tosort
- changes_made = False
- def bogosort(s):
- tosort = list(s)
- while tosort != sorted(tosort):
- random.shuffle(tosort)
- return tosort
- def selectionsort(s):
- tosort = list(s)
- for i in range(len(tosort)):
- minimum = i
- for x in range(i+1,len(tosort)):
- if tosort[x] < tosort[minimum]:
- minimum = x
- if minimum != i:
- tosort[i], tosort[minimum] = tosort[minimum], tosort[i]
- return tosort
- def insertsort(s):
- tosort = list(s)
- while tosort != sorted(tosort):
- for i in range(1, len(tosort)):
- if tosort[i-1] > tosort[i]:
- hold = tosort[i]
- pos = i
- while pos > 0:
- tosort[pos] = tosort[pos-1]
- pos -= 1
- if tosort[pos+1] <= hold: break
- tosort[pos] = hold
- return tosort
- def quicksort(s, pivot_point):
- tosort = list(s)
- if len(tosort) <= 1: return tosort
- pivot_char = tosort[pivot_point]
- left = []
- right = []
- for i in range(len(tosort)):
- if i == pivot_point: next
- if tosort[i] < pivot_char:
- left += tosort[i]
- else:
- right += tosort[i]
- if len(left) <= 1:
- left = quicksort(left, 0)
- else:
- left = quicksort(left, random.randrange(0, len(left)))
- if len(right) <= 1:
- right = quicksort(right, 0)
- else:
- right = quicksort(left, random.randrange(0, len(right)))
- sorted = left
- sorted += pivot_char
- sorted += right
- return sorted
- s = raw_input("Please input string to be sorted: ")
- print("Bubble sort: "+str(bubblesort(s)))
- print("Insertion sort: "+str(insertsort(s)))
- print("Quicksort (fucked): "+str(quicksort(s, 2)))
- print("Selection sort: "+str(selectionsort(s)))
- print("Bogo: go away")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement