Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.10.2013
Сообщений: 12

Не получается написать quickSort

17.10.2013, 21:26. Показов 638. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Все тщетно пытаюсь написать быструю сортировку. Читал на википедии и т.д., но все же не могу прояснить несколько моментов.
1) В качестве опорного элемента выбирается медиана последовательности, но как понять когда элементы справа будут меньше опорного элемента, а слева - больше? До каких пор осуществлять частичную сортировку.
2) Как быть, если невозможна ситуация такой частичной сортировки? Например: 1 10 7 2 3 11 4, опорный элемент 2, как нужно сортировать в такой ситуации?
Заранее благодарен за помощь.
Вот пытался написать на Java:
Java
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
import java.util.*;
 
public class quickSort {
    public static void main(String[] args){
        int[] a = {9, 8, 7, 6, 5, 4, 3, 2, 1};
        int b = 0;
        int e = a.length - 1;
        func(a, b, e);
    }
    public static void func(int array[], int begin, int end){
        int med = (begin + end - 1) / 2;
        System.out.println();
        int i = 0;
            while(begin != med && end != med){
                while (array[begin] <= array[med]){
                    System.out.println(begin);
                    begin += 1;
                }
                while (array[end] >= array[med]){
                    System.out.println(end);
                    end -= 1;
                }
                if (begin < end){
                    int temp = array[begin];
                    array[begin] = array[end];
                    array[end] = temp;
            }
                System.out.println(i += 1);
    }
 
        func(array, med + 1, end);
        func(array, begin, med - 1);
}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2013, 21:26
Ответы с готовыми решениями:

не получается написать
учусь в универе на 1 курсе . вот нужно на Visual Basic написать такую программу : Дана последовательность из М чисел среди которых...

Не получается написать регулярку
неполучаеться написать регулярку для сбора картинок на mail.ru нужно взять только...

Не получается написать апплет
Здравствуйте! Требуется написать простенький апплет. Но проблема в том, что программа выдается ошибку import java.applet.*; import...

2
1968 / 824 / 115
Регистрация: 01.10.2012
Сообщений: 4,866
Записей в блоге: 2
18.10.2013, 15:26
Цитата Сообщение от antonk Посмотреть сообщение
2) Как быть, если невозможна ситуация такой частичной сортировки? Например: 1 10 7 2 3 11 4, опорный элемент 2, как нужно сортировать в такой ситуации?
Идем слева направо, 1 < 2, хорошо, продолжаем. 10 > 2, значит 10 надо переставить. Просматриваем справа налево (до 10), нет эл-тов < 2. Значит все, получили 2 подмассива {1} и {10 7 2 3 11 4}, которые парим рекурсивно. Да, не повезло, неудачная медиана, ну бывает и так, будет больше рекурсий
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
10.01.2014, 14:21
Цитата Сообщение от Igor3D Посмотреть сообщение
Просматриваем справа налево (до 10), нет эл-тов < 2.
Есть элемент - это сам опорный, т.е. 2 и его необходимо поменять с десяткой, соответственно индекс опорного элемента тоже меняется, но останется указывать на тот же элемент, т.е. 2. и так продолжаем менять элементы пока левая и правая границы не встретятся (в данном примере уже встретились) и только потом уже формируем два подмассива, для которых рекурсивно применяем тот же алгоритм.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.01.2014, 14:21
Помогаю со студенческими работами здесь

Не получается написать циклы
Вычислить сумму ряда. Создать две разные программы с использованием различных типов циклов (один типа for, другой типа - while)....

Не получается написать функцию
Кручу, верчу, ничего не получается, помогите, очень нужно) Написать функцию, для проверки правильности заполнения поля...

Не получается написать код
unit Unit2; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types,...

Не получается написать процедуры
Снова здравствуйте. Возникла довольно глупая проблема. Дана программа, написанная БЕЗ процедур. Мне её нужно переписать С процедурами. Да,...

Не получается написать код
Хотел потренироваться по C++ и решил создать программу которая создает анкету. Вроде бы код написал: #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru