Форум программистов, компьютерный форум 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; подробнее

Показать сообщение отдельно
bloodflood
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 11

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

13.02.2013, 01:38. Просмотров 604. Ответов 3
Метки (Все метки)

Здравствуйте, возникла проблема, не работает быстрая сортировка по возрастанию абсолютных величин для двумерного массива. Работает только, если столбцов почему-то 3 или меньше, при больших не работает.
Код функции:
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 m, int n) {
 
    int i = 0,j = n;        // поставить указатели на исходные места
    int temp, p;
 
p = a[m][ n>>1 ];        // центральный элемент
    //p=n/2;
  // процедура разделения
  do {
    while ( abs(a[m][i]) < abs(p) ) i++;
    while ( abs(a[m][j]) > abs(p) ) j--;
 
    if (i <= j) {
      temp = a[m][i]; a[m][i] = a[m][j]; a[m][j] = temp;
      i++; j--;
    }
  } while ( i<=j );
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( j > 0 ) quick(a,m, j);
  if ( n > i ) quick(a+i,m, n-i);
}
Код вызова(m-кол-во строк, n- кол-во столбцов):
C++
1
2
3
4
    for (int v=0; v<m; v++)
    {
        quick(arr, v, n-1);
    }
Буду благодарен помощи.

Добавлено через 33 минуты
Т.е я брал за основу сам метод из прикрепленной темы, и переделал его под двумерный, но он практически не работает.

Добавлено через 2 часа 42 минуты
...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru