Форум программистов, компьютерный форум CyberForum.ru

Не работает быстрая сортировка для двумерного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вращения куба http://www.cyberforum.ru/cpp-beginners/thread785066.html
Куб должен быть с закрашенными сторонами. Вращения по x,y,z. Помогите!!!
C++ Пересчёт времени: MM:SS -> HH:MM программа пересчета велечины временного интервала заданного в минутах и секундах. в велечину, выраженную в часах и в минутах http://www.cyberforum.ru/cpp-beginners/thread785064.html
C++ Заданы 2 строки, состоящие из слов, разделенных пробелами. Приписать три символа второй строки к первой
Заданы 2 строки, состоящие из слов, разделенных пробелами. Приписать три символа второй строки к первой. Поменять местами в измененной первой строке первое и последнее слово. Можете помочь сделать на с++ или Paskal
Рекурсию в цикл C++
Здравствуйте. У меня есть рекурсивная ф-ия, но глубина вызова довольно большая, в итоге стек переполняется и прога падает. Подскажите, как переписать ее в виде цикла и как вообще в дальнейшем действовать, если понадобиться переписывать ф-ию в цикл. У просто вообще никаких идей нет.... Вот сама ф-ия: void f1 (int num) { arr = 0; for (vector <int>::iterator it = data .begin (); it <...
C++ Как запихнуть в очередь указатель на узел дерева? http://www.cyberforum.ru/cpp-beginners/thread785049.html
как запихнуть в очередь указатель на узел дерева Добавлено через 16 минут up? Добавлено через 4 минуты как создать из узлов двоичного дерева очередь??
C++ Запись в файл, лишняя строка, не могу понять! Сломал всю голову, по каким то причинам при вводе данных клавиатуры, они записываются, но 1ая строка пустая, есть подозрение, ЧТО связано с "\n " в первом цикле. Не могу исправить, т.к. потом возникают сложности в выводе данных, да и не красиво как то это!^^ #include <iostream> #include <fstream> #include <string> using namespace std; struct abi {int n; int i; int k; подробнее

Показать сообщение отдельно
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
13.02.2013, 07:41     Не работает быстрая сортировка для двумерного массива
bloodflood, обратите внимание на строчку 23. По Вашему мнению что произойдет после выполнения операции a+i? В общем предлагаю функцию перестроить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void quick(int* a, int n) {
   int i = 0, j = n;        // поставить указатели на исходные места
   int temp, p;
 
   p = a[ n>>1 ];        // центральный элемент
 
   //p=n/2;
   // процедура разделения
   do {
      while ( abs(a[i]) < abs(p) ) i++;
      while ( abs(a[j]) > abs(p) ) j--;
 
      if (i <= j) {
         temp = a[i]; a[i] = a[j]; a[j] = temp;
         i++; j--;
      }
   } while ( i<=j );
 
   // рекурсивные вызовы, если есть, что сортировать
   if ( j > 0 ) quick(a, j);
   if ( n > i ) quick(a+i, n-i);
}
А вызов так:
C++
1
2
3
4
    for (int v=0; v<m; v++)
    {
        quick(arr[v], n-1);
    }
 
Текущее время: 08:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru