Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
makintosh1
0 / 0 / 0
Регистрация: 19.06.2018
Сообщений: 8
Завершенные тесты: 1
1

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

02.03.2019, 15:33. Просмотров 106. Ответов 0

Наткнулся на данном форуме на такой алгоритм быстрой бинарной сортировки для типа char:

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
const int SIZE_1 = 100;
 
bool digit(char x, int i) {
    return (x &(1u << i)) != 0;
};
 
void radixBin(char *arr, int start, int end, int num) {
    int i = start;
    int j = end;
 
    if (num < 0 || start == end) return;
    while (i < j) {
        while (digit(arr[i], num) == 0)
            i++;
 
        while (digit(arr[j], num) == 1)
            j--;
 
        if (i <= j) {
            swap(arr[i], arr[j]);
        }       
    }
 
    radixBin(arr, start, j, num - 1);
    radixBin(arr, i, end, num - 1);
};
 
void outputData(char *arr, int size, const char *path) {
    ofstream out(path);
    for (int i = 0; i < size; i++) {
        out << arr[i] << " ";
    }
    out.close();
}
 
void inputData(char *arr, int size, const char *path) {
    ifstream in;
    in.open(path);
    if (in.is_open()) {
        int i = 0;
        while (!in.eof() && i != size) {
            in >> arr[i];
            ++i;
        }
    }
    in.close();
}
 
int main() {
    setlocale(LC_ALL, "rus");
    
    char *arr_1 = new char[SIZE_1];
    inputData(arr_1 ,SIZE_1, "file_1.txt");
    radixBin(arr_1, 0, SIZE_1, 8);
    outputData(arr_1, SIZE_1, "sortedFile_1.txt");
    delete[] arr_1;
 
      return 0;
}
Однако в попытке переделать его под тип int столкнулся с проблемой (программа долго работает и не завершается). Возникает вопрос, как переделать данный алгоритм под целочисленный тип?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2019, 15:33
Ответы с готовыми решениями:

Бинарная сортировка файла
Помогите исправить код, что бы бинарная сортировка работала. #include &lt;iostream&gt; #include...

Двоичная(бинарная) сортировка
Бегло прочел про эту сортировку и понял что она ориентирована на числовые заранее отсортированные...

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным...

Быстрая сортировка (сортировка Хоара) для связных списков
есть у кого готовый алгоритм? или подскажите как реализовать

Сортировка Слиянием vs Быстрая Сортировка - что лучше
Народ, помогите разобраться какой из методов сортировки лучше &quot;Сортировка Слиянием&quot; или &quot;Быстрая...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2019, 15:33

C/C++ FAQ :: Быстрая сортировка (сортировка Хоара)
Вопрос, скорее академический, по мотивам реализации. Вот в faq приведена реализация этого метода...

Быстрая сортировка (сортировка методом Хоара)
Ввести массив x1,x2,...,x20 в диапазоне . Требуется расположить отрицательные элементы в порядке...

Сортировка Хоара / Быстрая сортировка
Доброго времени суток. Написал реализацию алгоритма быстрой сортировки. void SortHhoar(int...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru