Advertisement
DMG

Sorting algorithms (BS, SS, IS, MS, QS)

DMG
Jun 5th, 2014
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.27 KB | None | 0 0
  1. def BubbleSort(list):
  2.     for i in xrange(len(list)-2, -1, -1):
  3.         for j in xrange(i + 1):
  4.             if list[j] > list[j+1]:
  5.                 list[j], list[j+1] = list[j+1], list[j]
  6.  
  7.     return list
  8.  
  9.  
  10. def SelectionSort(list):
  11.     for i in xrange(0, len(list) - 1):
  12.         position = i
  13.         for j  in xrange(i+1, len(list)):
  14.             if list[position] > list[j]:
  15.                 position  = j
  16.  
  17.         if position != i:
  18.             t = list[i]
  19.             list[i] = list[position]
  20.             list[position] = t
  21.  
  22.     return list
  23.  
  24.  
  25. def InsertionSort(list):
  26.     for i in xrange(1, len(list), 1):
  27.         element = list[i]
  28.         j = i
  29.  
  30.         while j > 0 and element < list[j-1]:
  31.             list[j] = list[j-1]
  32.             j = j - 1
  33.  
  34.         list[j] = element
  35.  
  36.     return list
  37.  
  38.  
  39. def MergeLists(left, right):
  40.     result = []
  41.  
  42.     while len(left) > 0 or len(right) > 0:
  43.         if len(left) > 0 and len(right) > 0:
  44.             if left[0] < right[0]:
  45.                 result.append(left[0])
  46.                 left = left[1:]
  47.             else:
  48.                 result.append(right[0])
  49.                 right = right[1:]
  50.         elif len(left) > 0:
  51.             result.append(left[0])
  52.             left = left[1:]
  53.         else:
  54.             result.append(right[0])
  55.             right = right[1:]
  56.  
  57.     return result
  58.  
  59. def MergeSort(list):
  60.     if len(list) <= 1:
  61.         return list
  62.  
  63.     leftList = []
  64.     rightList = []
  65.  
  66.     middle = len(list)//2
  67.  
  68.     for i in xrange(middle):
  69.         leftList.append(list[i])
  70.  
  71.     for i in xrange(middle, len(list), 1):
  72.         rightList.append(list[i])
  73.  
  74.     leftList  = MergeSort(leftList)
  75.     rightList = MergeSort(rightList)
  76.  
  77.     return MergeLists(leftList, rightList)
  78.  
  79.  
  80. def QuickSort(list, left, right):
  81.     if left < right:
  82.         pivot = list[(left + right)//2]
  83.         list[(left + right)//2], list[right] = list[right], list[(left + right)//2]
  84.  
  85.         start = left
  86.  
  87.         for i in xrange (left, right, 1):
  88.             if list[i] <= pivot:
  89.                 list[start], list[i] = list[i], list[start]
  90.                 start += 1
  91.  
  92.         list[start], list[right] = list[right], list[start]
  93.  
  94.         QuickSort(list, left, start - 1)
  95.         QuickSort(list, start + 1, right)
  96.  
  97.     return  list
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement