С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
2 / 1 / 1
Регистрация: 12.11.2018
Сообщений: 53

Подсчет количества сравнений и обменов в процессе упорядочения методом Хоара

26.03.2020, 13:48. Показов 3944. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть сортировка методом Хоара, нужно еще сделать подсчет количества сравнений и обменов в процессе упорядочения методом Хоара
вот програма:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from random import randint
 
A = [randint(0,50) for x in range(10)]
print(A)
 
 
def QuickSort(A):
    if len(A) <= 1:
        return A
    else:
        q = A[int(len(A)/2)]
        L = []
        M = []
        R = []
        for elem in A:
            if elem < q:
                L.append(elem)
            elif elem > q:
                R.append(elem)
            else:
                M.append(elem)
        return QuickSort(L) + M + QuickSort(R)
 
print(QuickSort(A))
подскажите как мне добавить и вывести эти счетчики?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2020, 13:48
Ответы с готовыми решениями:

Сортировке Шейкера (подсчет количества сравнений и обменов)
Здравствуйте, пожалуйста, помогите исправить ошибку в сортировке Шейкера (подсчет количества сравнений и обменов). uses crt; const...

Подсчет количества обменов и сравнений в алгоритмах сортировки
Помогите как в алгоритмах сортировки: простыми включениями (простой вставкой),методом пузырька определить - определение числа сравнений; ...

Пирамидальная и шейкерная сортировка. Подсчёт кол-ва сравнений и обменов
Здравствуйте. Я бы хотел узнать правильно ли я считаю кол-во сравнений и обменов при сортировках. Пирамидальная: procedure...

3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
26.03.2020, 14:14
Цитата Сообщение от Nikmoz Посмотреть сообщение
Есть сортировка методом Хоара,
- сам писал?
Цитата Сообщение от Nikmoz Посмотреть сообщение
нужно еще сделать подсчет количества сравнений и обменов
- в этой реализации совсем нет обменов...
1
2 / 1 / 1
Регистрация: 12.11.2018
Сообщений: 53
26.03.2020, 14:53  [ТС]
1.Нет, посмотрел на нескольких сайтах, везде вот такая самая простая реализация)
Взял это:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def QuickSort(A):
    if len(A) <= 1:
        return A
    else:
        q = random.choice(A)
        L = []
        M = []
        R = []
        for elem in A:
            if elem < q:
                L.append(elem) 
            elif elem > q: 
                R.append(elem) 
            else: 
                M.append(elem)
        return QuickSort(L) + M + QuickSort(R)
2.А можете подсказать как сделать подсчет сравнений, или где можно найти информацию)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
26.03.2020, 15:22
Лучший ответ Сообщение было отмечено Nikmoz как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
global c_comp,c_swap
 
def test(arr):
    global c_comp,c_swap
    c_comp,c_swap=0,0
    quick_sort(arr,0,len(arr)-1)
 
def quick_sort(x,ibeg,iend):
    global c_comp,c_swap
    if (iend-ibeg)<=1:
        return
    isep=(ibeg+iend)//2
    sep=x[isep]
    i=ibeg
    j=iend
    while(True):
        while(x[i]<sep):
            i+=1
            c_comp+=1
        while(x[j]>sep): 
            j-=1
            c_comp+=1
        if (i<=j):
            x[i],x[j]=x[j],x[i]
            c_swap+=1
            i+=1
            j-=1
        if (i>=j): break
    quick_sort(x,ibeg,j)
    quick_sort(x,i,iend)
    
x=[1,2,3,1,2,3,1,-2,3,0]
test(x)
print(x)
print("c_comp="+str(c_comp))
print("c_swap="+str(c_swap))
Вывод:

[-2, 0, 1, 1, 1, 2, 2, 3, 3, 3]
c_comp=12
c_swap=10
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2020, 15:22
Помогаю со студенческими работами здесь

Составить схему и программу упорядочения (сортировки) массива методом обменов
Составить схему алгоритма и программу упорядочения (сортировки) массива a1 , a2 ,...,an по возрастанию ( а1&lt;= а2 &lt;=...&lt;=аn )...

Поставить счетчики на проверку количества сравнений и обменов сделанных сортировкой
необходимо поставить гдето счетчики на проверку количества сравнений и обменов сделанных сортировкой не получается . for (j = i; j...

Программа подсчёта количества обменов и сравнений алгоритма сортировки вставками
Нужно написать программу со счётчиками,которые выводят числа,которые обозначают количества обменов и сравнений алгоритма сортировки...

Подсчёт количества сравнений в функции
Здравствуйте, реализовал такую функцию, которая делает сортировку массива методом простых включений. Алгоритм полностью выполняет свои...

Подсчет количества сравнений и пересылок
Не совсем понимаю как здесь сделать подсчет количества сравнений и пересылок. Ниже - кусочек кода программы, где это должно быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru