#-*- coding: UTF-8 -*- #Импортируем модуль random, для генерации псевдослучайных целых чисел import random #объявляем пустой массив rawArray = [] #заполняем пустой массив случайными значениями от -100 до 100 for i in range(random.randint(1, 100)): rawArray.append(random.randint(-100, 100)) #функция для нахождения среднего арифметического максимального и минимального элементов def midEl(y = []): #переменные для хранения максимального и минимального элементов maxEl = y[0] minEl = y[0] #Находим максимальный и минимальный элемент в массиве rawArray for j in range(0, len(y) - 1): if y[j] >= maxEl: maxEl = y[j] elif y[j] <= minEl: minEl = y[j] #находим среднее арифметическое значение макс и мин элементов, и возращаем значение return (maxEl+minEl)/2 #объявлеяем функцию сортировки def qSort(x = []): #иттератор с начала массива i = 0 #иттератор с конца массива r = len(x) - 1 #опорный элемент midElem = midEl(x) #два массива для хранения промежуточных результатов first = [] second = [] #перебираем весь массив for j in range(0, r): #если иттераторы равны, значит мы дошли до середины! while i != r: #если элемент меньше среднеарифметической, то он попадает в первую часть массива, если нет, то в конец if x[j] <= midElem: rawArray[i] = x[j] first.append(x[j]) i += 1 elif x[j] >= midElem: rawArray[r] = x[j] second.append(x[j]) r -= 1 #рекурсивно вызываем функцию сортировки if len(first) > 1 and len(second) > 1: qSort(first) qSort(second) elif len(first) > 1: qSort(second) elif len(second) > 1: qSort(second) qSort(rawArray) print(rawArray)
Пытаюсь написать быструю сортировку. При компиляции Python 3.4 выдаёт ошибку:
Traceback (most recent call last):
File "qs.py", line 65, in <module>
qSort(rawArray)
File "qs.py", line 60, in qSort
qSort(second)
File "qs.py", line 35, in qSort
midElem = midEl(x)
File "qs.py", line 14, in midEl
maxEl = y[0]
IndexError: list index out of range
Помогите пожалуйста
![](/static/djangobb_forum/img/smilies/smile.png)