10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2

Быстрая сортировка в методе, принимающем массив как параметр

15.03.2011, 17:47. Показов 5093. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет! Ребята, помогите плз. Напишите быструю сортировку, только так, чтобы
процедура принимала только массив и все!!!

C#
1
2
3
4
QuickSort (int[] mass)
{
// ?????
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2011, 17:47
Ответы с готовыми решениями:

Быстрая сортировка не сортирует весь массив
Программа быстрой сортировки сортирует только первые 10 элементов, остальная часть остается неотсортированной. Как исправить? #include...

Динамический массив. Быстрая сортировка, поправить программку
Нужно остортировать файлик, "Быстрой сортировкой", нужно подлатать программку, не работает.. Type rec=record FIO:string; ...

Массив указателей объектов класса и их быстрая сортировка
Приветствую! Собственно, у меня есть: Класс Worker; Динамический массив, хранящий в себе объекты класса Worker; Конструктор...

15
22 / 22 / 2
Регистрация: 09.02.2011
Сообщений: 54
15.03.2011, 17:57
А так не идёт?

C#
1
Array.Sort(mass);
Что вообще подразумивается под быстрой сортировкой?
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
15.03.2011, 17:57
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        public static void ASort(int[] mass) {
            Array.Sort(mass);
        }
 
        static void Main(string[] args)
        {
            int[] arr = new int[] {5, 1, 7, 2};
            ASort(arr);
            for (int i=0; i<arr.Count(); i++){ Console.WriteLine(arr[i]);}
            Console.WriteLine("Press Enter");
            Console.ReadLine();
        }
    }
}
0
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
15.03.2011, 18:19  [ТС]
Парни вы че угораете?)) я канеш не совсем еще силен в C#, но это простите дурак сделает)))

Существует такая сортировка - называется БЫСТРАЯ СОРТИРОВКА или QuickSort, алгоритм Хоара.

Вот как реализовать его на C# , чтобы входным параметром был только массив и все!)
0
 Аватар для NiceGuyEddy
220 / 143 / 35
Регистрация: 25.06.2010
Сообщений: 383
15.03.2011, 18:28
Temoxa, Ваша тема? Так и не ответили там.
А здесь смотрели? =)
0
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
15.03.2011, 18:42  [ТС]
Мое, мое) просто проблема то висит! Надо самому написать, и хочу чтобы тока 1 входной параметр был, это массив!)))) И все! Можете помочь?)
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
15.03.2011, 18:49
Можем, вот ссылка на описание алгоритма
0
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
15.03.2011, 18:58  [ТС]
Ребят)) Ну помогите, что сложно? чтобы в сортировке не было там Left, Right..... А просто один параметр массив сам и все?)) Пожалуйста подделайте как должно быть?
0
15.03.2011, 19:09
 Комментарий модератора 
Temoxa, дублирование тем запрещно правилами. Выбирай которую удалять.
0
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
15.03.2011, 19:11  [ТС]
Старую закрывай, эта нужна еще)
0
15.03.2011, 19:23
 Комментарий модератора 
Temoxa, почитай правила (в особенности пп. 2.14, 3.4, 3.15)
0
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
16.03.2011, 20:53  [ТС]
Да прости! Просто я про ту честно забыл... она вон уж когда создана была.

Парни ну помогите блин с этой сортировкой то!(

Добавлено через 13 минут
На самом деле мне надо еще не рекурсивную быструю сортировку... чтобы не через рекурсию делать...

Вот как так сделать?(

Добавлено через 23 часа 57 минут
Ребята, нашел вот такую сортировку НЕРЕКУРСИВНУЮ быструю, через стэк написана....
Она на С++ написана((( помогите в C# перекодить...плз!!

C++
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
37
38
39
40
void Quick(int arr[], int n)
{
    int base, left, right, i, j;
    base = left = right = i = j = 0;
    Stack stack;
 
    stack.Push(n - 1);
    stack.Push(0);
    do {                  // while (stack.GetSP() != NULL)
        left  = stack.Pop();
        right = stack.Pop();
        if (((right - left) == 1) && (arr[left] > arr[right]))
                swap(arr[left], arr[right]);
        else {
 
            base = arr[(left + right) / 2];
            i = left;
            j = right;
            // цикл продолжается, пока индексы i и j не сойдутся
            do {         // while (i > j)
                // пока i-ый элемент не превысит опорный
                while ((base > arr[i]))
                    ++i;
                // пока j-ый элемент не окажется меньше опорного
                while (arr[j] > base)
                    --j;
                if (i <= j)
                    swap(arr[i++], arr[j--]);
            } while (i <= j);
        }
        if (left < j) {
            stack.Push(j);
            stack.Push(left);
        }
        if (i < right) {
            stack.Push(right);
            stack.Push(i);
        }
    } while (stack.GetSP() != NULL);
}
Добавлено через 1 час 13 минут
Неужели никто не может взяться?(
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
16.03.2011, 21:27
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

К примеру:
C#
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
37
38
39
40
41
42
43
44
45
        void swap(int[] arr, int i0, int i1) {
            int c = arr[i1];
            arr[i1] = arr[i0];
            arr[i0] = c;
        }
 
        void Quick(int[] arr) {
            int @base, left, right, i, j;
            @base = left = right = i = j = 0;
            Stack<int> stack = new Stack<int>();
            
            stack.Push(arr.Length - 1);
            stack.Push(0);
 
            do {
                left = stack.Pop();
                right = stack.Pop();
 
                if ((right - left) == 1 && arr[left] > arr[right]) {
                    swap(arr, left, right);
                } else {
                    @base = arr[(left + right) / 2];
                    i = left;
                    j = right;
 
                    do {
                        while(@base > arr[i])
                            ++i;
                        while(arr[j] > @base)
                            --j;
                        if (i <= j) {
                            swap(arr, i++, j--);
                        }
                    } while (i <= j);
                }
                if (left < j) {
                    stack.Push(j);
                    stack.Push(left);
                }
                if (i < right) {
                    stack.Push(right);
                    stack.Push(i);
                }
            } while(stack.Count != 0);
        }
1
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
17.03.2011, 09:43  [ТС]
Спасибо) Но только он выдает ошибку что мы выходим за пределы массива...) Но иногда не выдает но массив не сортирует(((
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
17.03.2011, 10:51
Цитата Сообщение от Temoxa Посмотреть сообщение
Ребят)) Ну помогите, что сложно? чтобы в сортировке не было там Left, Right..... А просто один параметр массив сам и все?)) Пожалуйста подделайте как должно быть?
))) А еще чтоб не нужно было процессора, материнки и ЭВМ впринципе.....
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.03.2011, 22:43
Temoxa, я не знаю как Вы использовали данный мною код, но алгоритм работает - я сгенерировал 10000 случайных чисел (используя класс RandomNumberGenerator), и они были полностью отсортированы данным алгоритмом, без всяких ошибок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2011, 22:43
Помогаю со студенческими работами здесь

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка вставкой - быстрая сортировка

Как в методе вызвать другой метод? У обоих различается параметр "e"
Добрый день. Изучать С# начал недавно. У меня сложилась такая ситуация. Хочу в методе public void webClient_DownloadFileCompleted1(object...

Параметр this в конструкторе, методе
Рассмотрим на примере узла (Node) кольцевого двусвязного списка. Значения первого узла (Next, Prev) будут указывать на текущий класс. ...

Быстрая сортировка - как работать с рекурсией?
Быстрая сортировка Как рекурсивно вызвать? static class QuickSorting { public static void Sort&lt;T&gt;(T...

Быстрая сортировка как дружественная функция
Доброго времени суток, подскажите пожалуйста имеет ли смысл пытаться реализовать быструю сортировку как дружественную функцию к классу...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru