Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 7
Регистрация: 11.09.2015
Сообщений: 24
1

Быстрая сортировка

22.12.2016, 11:38. Показов 354. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
#define SIZE 50
 
void Init(double *a, int n)
{
    int i;
    srand((unsigned)time(NULL));
    for (i = 0; i < n; i++)
        a[i] = rand();
}
 
void QSort(double *a, int left, int right)
{
    double tmp, mid=a[(left + right) / 2];
    int m = (left + right) / 2;
    int i = left, j = right;
 
    do{
        while (a[i] < a[m] && i < right) i++;
        while (a[j] > a[m] && j > left) j--;
        if (i <= j)
        {
            tmp = a[i]; a[i] = a[j]; a[j] = tmp; i++; j--;
        }
    } while (i <= j);
 
    if (left < j) QSort(a, left, j);
    if (i < right) QSort(a, i, right);
}
 
void main()
{
    double mas[SIZE];
    int i;
    Init(mas, SIZE);
    for (i = 0; i < SIZE; i++) printf("%2d  %5g\t", i, mas[i]); printf("\n");
    QSort(mas, 0, SIZE - 1);
    for (i = 0; i < SIZE; i++) printf("%2d  %5g\t", i, mas[i]); printf("\n");
}
В середине сортировки сбивается (где то с 15 элемента до 25), но потом доделывает нормально. Хотя если в QSort в цикле вместо a[m] писать mid работает нормально. Почему ? Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2016, 11:38
Ответы с готовыми решениями:

Быстрая сортировка и Обменная сортировка - реализация API функции
Всех приветствую! Делаю курсовой проект и появилась одна проблем-ка.... У меня есть готовые две...

Сортировка Шелла быстрее чем Быстрая сортировка
В универе задали задание построить графики относительно скорости сортировок и размеров массивов....

Быстрая сортировка Си/С++
Есть быстрая сортировка: void quick_sort(int* sarr, int j) { int size = j; int k = 0; int c...

Быстрая сортировка
Помогите, пожалуйста, исправить ошибку в сортировке void sort5(int left, int right){ int i =...

0
22.12.2016, 11:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2016, 11:38
Помогаю со студенческими работами здесь

Быстрая сортировка
Есть программа написанная на си. Она генерирует массив и проводит на нём быструю сортировку в...

Быстрая сортировка
По какому принципу производиться выбор первого элемента в быстрой сортировке(qsort)?В каком случае...

Быстрая сортировка
Всем привет. Есть функция, которая делает что-то вроде быстрой сортировки. В функции divide есть...

Быстрая сортировка по убыванию
#include &lt;stdio.h&gt; #include &lt;locale.h&gt; #define N 10 void quicksort(int a, int low, int hight);...

Быстрая сортировка не работает
Ребята помогите довести до ума прогу. :cry: Прога сама случайным образом заполняет масив например...

Быстрая сортировка с указателями
Здрауствуйте, подскажите пожадуйста, я сделал быструю сортировку с указателями, оно вроде работет -...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru