Аватар для KlikQ
3 / 3 / 4
Регистрация: 06.05.2013
Сообщений: 63

Какие есть самые лучшие алгоритмы сортировки, самые быстрые?

19.04.2014, 17:02. Показов 3087. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, какие есть самые лучшие алгоритмы сортировки, самые быстрые.
Например есть одномерный массив чисел, как его быстро отсортировать?
Или например есть одномерный массив символов, как его быстро отсортировать по убыванию или наоборот?
Если можете, напишите код на Си, как пример. Заранее спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.04.2014, 17:02
Ответы с готовыми решениями:

Поменять местами самые короткие и самые длинные слова в тексте
В файле есть текст. Определены самое короткое и самое длинное слова. Нужно поменять их местами в тексте.

Какие самые лучшие аккумуляторы для фотоаппарата(АА)?
Парни, подскажите, пожалуйста. Какие самые лучшие аккумуляторы для фотоаппарата? Форм-фактор АА. Что-то посмотрел вчера в DNS-e. Никаких...

Самые сильные - самые лучшие?!
Правда ли, что самые первые беки в листе ссылок самые качественные с точки зрения яндекса. Или расположение и последовательность не имеют...

11
 Аватар для Smallvi
5 / 5 / 7
Регистрация: 08.04.2014
Сообщений: 37
19.04.2014, 17:17
Используй встроенную функцию qsort.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE 100 // размер выделения памяти
 
void init(int[], int);
int compareASC(const void*, const void*);
int compareDESC(const void*, const void*);
void print(int[], int);
 
int main()
{
    int *p = (int*) malloc(SIZE * sizeof(int)); // выделяем память
 
    if(p == NULL) { // если память не может выделиться
        printf("Error! No free memory!");
        system("pause");
        exit(0);
    }
 
    // заполняем массив значениями
    init(p, SIZE);
 
    // сортируем
    qsort(p, SIZE, sizeof(int), compareASC);
    //qsort(p, SIZE, sizeof(int), compareDESC); - сортировка в обратном порядке
 
    // выводим массив
    print(p, SIZE);
 
    // после использования памяти освождаем её
    free(p);
    p = NULL;
 
    system("pause");
    return 0;
}
 
void init(int arr[], int len) {
    int i;
    for(i = 0; i < len; i++) arr[i] = rand(); // заполняем случайными числами
}
 
int compareASC(const void *p1, const void *p2) {
    int n1 = *(int*)p1;
    int n2 = *(int*)p2;
 
    if(n1 < n2) return -1;
    if(n1 == n2) return 0;
    else return 1;
}
 
int compareDESC(const void *p1, const void *p2) {
    return -compareASC(p1, p2);
}
 
void print(int arr[], int len) {
    int i;
    for(i = 0; i < len; i++) {
        printf("%d\n", arr[i]);
    }
}
0
 Аватар для KlikQ
3 / 3 / 4
Регистрация: 06.05.2013
Сообщений: 63
19.04.2014, 19:07  [ТС]
Простите, забыл написать, нужно использовать только библиотеку stdio.h .
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4572 / 2767 / 491
Регистрация: 28.04.2012
Сообщений: 8,705
19.04.2014, 19:34
http://en.wikipedia.org/wiki/Quicksort
0
 Аватар для Smallvi
5 / 5 / 7
Регистрация: 08.04.2014
Сообщений: 37
19.04.2014, 19:35
Лучший ответ Сообщение было отмечено KlikQ как решение

Решение

KlikQ, держите - Алгоритмы сортировок
Я советую 6 вариант - быструю сортировку.
1
 Аватар для KlikQ
3 / 3 / 4
Регистрация: 06.05.2013
Сообщений: 63
19.04.2014, 20:12  [ТС]
спасибо
0
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
19.04.2014, 23:04
Лично мне больше всего нравится гномья сортировка, она проста, довольно эффективна и легко реализуется на C.
0
 Аватар для KlikQ
3 / 3 / 4
Регистрация: 06.05.2013
Сообщений: 63
19.04.2014, 23:47  [ТС]
Vtulhu, ваша сортировка похожа на сортировку "Пузырек".
0
20.04.2014, 14:26

Не по теме:

Все так лихо советуют quicksort в качестве лучшего метода сортировки, но никто даже не поинтересовался характером исходной последовательности...

0
2 / 2 / 0
Регистрация: 11.05.2014
Сообщений: 10
11.05.2014, 11:01
Большинство существующих алгоритмов сортируют за N * log2 (N)
0
71 / 45 / 24
Регистрация: 11.05.2014
Сообщений: 179
12.05.2014, 00:06
Если известен диапазон значений элементов массива (например, это 8-битные числа), то можно просто посчитать встречаемость каждого такого числа в исходном массиве.
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
12.05.2014, 00:24
Цитата Сообщение от Vtulhu Посмотреть сообщение
она проста, довольно эффективна
И в чем же её эффективность, позвольте разузнать?
Цитата Сообщение от Smallvi Посмотреть сообщение
(int*) malloc(SIZE * sizeof(int));
Ох и любят же приплюснутые маллок приводить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2014, 00:24
Помогаю со студенческими работами здесь

Самые просматриваемые, самые залайканные, самые комментируемые посты вывести на отдельные страницы
Здравствуйте. Помогите пожалуйста, еще новичок в WordPress. Хочу сделать отдельные страницы с такими параметрами: Самые...

Самые быстрые заработки на Python
Здравствуйте, форум! Интересует практический вопрос. В каких областях и что такого можно программировать более-менее быстро, с не самым...

Подскажите самые быстрые коллекции
привет Работаю с биржевыми данными данных много - 30 000 000 экземпляров записей в каждом экземпляре есть поле - цена - тип Double ...

Самые лучшие видеокарты
подскажите какие лучше брать для игр в пределах 10000 рублей

Самые лучшие книги joomla
Я понимаю что есть руководство по joomla но может есть супер киниги где все просто и понятно описывается как собственно создать сайт, может...


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

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

Новые блоги и статьи
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
API на базе FastAPI с Python за пару минут
AI_Generated 07.07.2025
FastAPI - это относительно молодой фреймворк для создания веб-API, который за короткое время заработал бешеную популярность в Python-сообществе. И не зря. Я помню, как впервые запустил приложение на. . .
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском https:/ / vkvideo. ru/ video-231374465_456239020 На английском https:/ / www. youtube. com/ watch?v=oskqtCrWns0 Исходники примера:
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
Создаем микросервисы с Go и Kubernetes
golander 02.07.2025
Когда я только начинал с микросервисами, все спорили о том, какой язык юзать. Сейчас Go (или Golang) фактически захватил эту нишу. И вот почему этот язык настолько заходит для этих задач: . . .
C++23, квантовые вычисления и взаимодействие с Q#
bytestream 02.07.2025
Я всегда с некоторым скептицизмом относился к громким заявлениям о революциях в IT, но квантовые вычисления - это тот случай, когда революция действительно происходит прямо у нас на глазах. Последние. . .
Вот в чем сила LM.
Hrethgir 02.07.2025
как на английском будет “обслуживание“ Слово «обслуживание» на английском языке может переводиться несколькими способами в зависимости от контекста: * **Service** — самый распространённый. . .
Использование Keycloak со Spring Boot и интеграция Identity Provider
Javaican 01.07.2025
Два года назад я получил задачу, которая сначала показалась тривиальной: интегрировать корпоративную аутентификацию в микросервисную архитектуру. На тот момент у нас было семь Spring Boot приложений,. . .
Содержание темы с примерами на WebGL
8Observer8 01.07.2025
Все примеры из книги Мацуды и Ли в песочнице JSFiddle Пример выводит точку красного цвета размером 10 пикселей на WebGL 1. 0 и 2. 0 WebGL 1. 0. Передача координаты точки из главной программы в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru