2016-09-07 5 views
-2

Мне очень нужна ваша помощь, я изучаю алгоритмы сортировки, и я попытался создать алгоритм Insertionsort-Algorithm. Не могли бы вы рассказать мне, является ли это алгоритмом Insertionsort или нет?Является ли это Insertionsort?

def insertsort(l): 
    for k in range(len(l)): 
     for i in range(1,len(l)): 
      if l[i]<l[i-1]: 
       while l[i]<l[i-1]: 
        l.insert(i-1,l.pop(i)) 
    return l 
+1

Я всерьез задумываюсь о том, чтобы голосовать, в первую очередь, на основе мнения. –

+0

Я вижу вызов 'insert', поэтому это должно быть сортировка вставки. –

+0

@MadPhysicist Это не основано на мнении ... –

ответ

0

Да, это сортировка. Псевдокод выглядит следующим образом:

1.  for j = 2 to n 
2.   key ← A [j] 
3.   // Insert A[j] into the sorted sequence A[1..j-1] 
4.   j ← i – 1 
5.   while i > 0 and A[i] > key 
6.     A[i+1] ← A[i] 
7.     i ← i – 1 
8.   A[j+1] ← key 
+0

Строка 4, откуда берется значение для «i»? – Marichyasana

0

Я так не считаю. Вы использовали два гнезда для петель и , а. В псевдокоде, предоставленном @dreadedHarvester, и реализации, представленной в RosettaCode, используется только один для цикла и один , а.

def insertion_sort(l): 
    for i in xrange(1, len(l)): 
     j = i-1 
     key = l[i] 
     while (l[j] > key) and (j >= 0): 
      l[j+1] = l[j] 
      j -= 1 
     l[j+1] = key 
Смежные вопросы