Risonna

квадратичные сортировки

Aug 6th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.37 KB | None | 0 0
  1. def sum_digits(n):
  2.    return sum(map(int, str(n)))
  3.  
  4. # сортировка выбором
  5. def choice_sort(l):
  6.    a = l[:]
  7.    n = len(a) # всего n**2 / 2
  8.    for i in range(n - 1): # n раз
  9.       # ищем индекс максимума
  10.       max_idx = 0
  11.       for j in range(1, n - i): # n / 2
  12.          if a[max_idx] < a[j]:
  13.             max_idx = j
  14.       # меняем
  15.       a[max_idx], a[-(i + 1)] = a[-(i + 1)], a[max_idx]
  16.    return a
  17.  
  18. # сортировка выбором
  19. def choice_sort(l, key=lambda x: x):
  20.    a = l[:]
  21.    n = len(a)
  22.    for i in range(1, n):
  23.       for j in range(n - i):
  24.          if key(a[-i]) < key(a[j]):
  25.             a[-i], a[j] = a[j], a[-i]
  26.    return a
  27.  
  28. # сортировка вставками online-алгоритм
  29. def insert_sort(l):
  30.    a = l[:]
  31.    n = len(a)
  32.    for i in range(1, n):
  33.       j = i
  34.       while j > 0  and a[j - 1] > a[j]:
  35.          a[j - 1], a[j] = a[j], a[j - 1]
  36.          j -= 1
  37.    return a
  38.  
  39. # сортировка "пузырьком"
  40. def bubble_sort(l):
  41.    a = l[:]
  42.    n = len(a)
  43.    for i in range(n - 1):
  44.       for j in range(n - i - 1):
  45.          if a[j] > a[j + 1]:
  46.             a[j], a[j + 1] = a[j + 1], a[j]
  47.    return a
  48.  
  49. def my_sort(l):
  50.    a = l[:]
  51.    n = len(a)
  52.    for i in range(n):
  53.       for j in range(n):
  54.          if a[j] > a[i]:
  55.             a[i], a[j] = a[j], a[i]
  56.    return a
Advertisement
Add Comment
Please, Sign In to add comment