Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2

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

15.03.2011, 17:47. Показов 5045. Ответов 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
8725 / 3677 / 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
8725 / 3677 / 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru