Подскажите пожалуйста почему не работает, нет времени в отладчике сидеть, сдавать скоро.
__author__ = 'denis'
def swap(arr, i, j):
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
arr = [5, 1, 3, 4, 7, 8, 9]
last = len(arr) - 1
left = 1
right = len(arr) - 1
while True:
for i in range(right, left, -1):
if(arr[i - 1] > arr[i]):
swap(arr, i - 1, i)
last = i
left = last + 1
for i in range(left, right, 1):
if(arr[i - 1] > arr[i]):
swap(arr, i - 1, i)
last = i
right = last - 1
if(left <= right):
break
Заранее спасибо.
Пользователь решил продолжить мысль [time]30 Сентябрь 2015, 00:50:58[/time]:
Написал по другому, тоже не работает
__author__ = 'denis'
def swap(arr, i, j):
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
arr = [5, 1, 3, 4, 7, 8, 9]
b = int(0)
lf = int(0)
rg = int(len(arr) - 1)
while lf < rg:
for i in range(lf, rg, 1):
if arr[i] > arr[i + 1]:
b = i
swap(arr, i, i + 1)
rg = b
if lf >= rg:
break
for i in rg(rg, lf, -1):
if arr[i - 1] > arr[i]:
b = i
swap(arr, i, i - 1)
lf = b
Пользователь решил продолжить мысль [time]30 Сентябрь 2015, 02:01:36[/time]:
И подскажите еще, что тут не так?
__author__ = 'denis'
def swap(arr, i, j):
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
arr = [5, 1, 3, 4, 7, 8, 9]
def quicksort(arr, start, end):
i = start
j = end
mid = arr[int(start + (end - start) / 2)]
while i < j:
while arr[i] < mid:
i += 1
while arr[j] > mid:
j += 1
if i <= j:
swap(arr, i, j)
i += 1
j -= 1
if(start < j):
quicksort(arr, start, j)
if(i < end):
quicksort(arr, i, end)
return arr
arr2 = quicksort(arr, 0, len(arr) - 1)