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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kitoboy
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 3
#1

Быстрая сортировка: упорядочить нечетные элементы матрицы по возрастанию - C++

22.03.2011, 16:51. Просмотров 1007. Ответов 0
Метки нет (Все метки)

Задача: упорядочить нечетные элементы двумерного массива по возрастанию с помощью quicksort. Также нужно, чтобы программа подсчитала количество сравнений и перестановок и вывела это отдельно. Массив задается отдельной функцией, отсортированный печатается тоже отдельно (это сделано все). Главная проблема с подсчетом (не знаю как реализовать) и сама сортировка почему-то не до конца работает.

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
void quickSort(int** a, int m, int n) //матрица а (m x n)
 {
   int l=0, i, j, p; // l - индекс начального указателя, i - указательна номер строки, j - указатель на последний нечетный элемент, p - элемент для сравнения
   for (i=0;i < m;i++) //для каждой строки (почему-то не работает)
   {
   if (n%2) //проверяет число строк на четность, чтобы узнать какой элемент нужно взять за отсчетный (нужно нечетный)
       {
           j=n-1;
           if ((n/2)%2)
           p=a[i][n/2];
           else
               p=a[i][(n/2)-1];
       }
   else
   {
        j=n-2;
        if ((n/2-1)%2)
           p=a[i][n/2];
           else
               p=a[i][(n/2)-1];
   }
  do 
  {
    while ( a[i][l] < p ) 
        l+=2;
    while ( a[i][j] > p )
        j-=2;
    if (l <= j) 
    {
      SWAP(a[i][l],a[i][j]);
      l+=2; 
      j-=2;
    }
    
  } 
    while ( l<=j );
    
    if ( j > 0 ) 
        quickSort(a, m, j);
    if ( n > l ) 
        quickSort(a+l, m, n-l); //рекурсия, чтобы проверял и дальше пока все не осортирует, кажется, что ошибка здесь
       }
  }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2011, 16:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Быстрая сортировка: упорядочить нечетные элементы матрицы по возрастанию (C++):

Быстрая сортировка стобцов матрицы по возрастанию - C++
Всем доброго времени суток! Задается квадратная матрица с четным количеством строк и стобцов, нужно отсортировать ее столбцы по...

Нечетные строки матрицы упорядочить по убыванию, четные - по возрастанию (гномьей сортировкой) - C++
Всем привет! Есть задание: Отсортировать двумерный массив. Нечетные строки по убыванию, четные по возрастанию помощью гномьей...

Упорядочить элементы строк матрицы по возрастанию, а сами строки по возрастанию суммы элементов - C++
Дана матрица Х. Упорядочить элементы строк матрицы по возрастанию, а сами строки по возрастанию суммы элементов строк (использовать...

Упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по строкам ее элементы образовывали отсортированный по возрастанию массив - C++
Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1&lt;n&lt;=100, 1&lt;m&lt;=50) и Упорядочить все элементы матрицы...

Упорядочить по возрастанию элементы каждого столбца матрицы - C++
Составьте программу, упорядочивающую по возрастанию элементы каждого столбца матрицы размером m*n.:(

Упорядочить по возрастанию элементы каждой строки матрицы n*m - C++
Упорядочить по возрастанию элементы каждой строки матрицы размером n*m Динамический массив Помогите

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2011, 16:51
Привет! Вот еще темы с ответами:

Упорядочить по возрастанию элементы второй строки матрицы - C++
Помогите, пожалуйста, с кодом #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;clocale&gt; #include &lt;cstdlib&gt; #include &lt;conio.h&gt; ...

Упорядочить по возрастанию элементы каждого столбца матрицы - C++
Упорядочить по возрастанию элементы каждого столбца матрицы размером n*m.Найти сумму положительных элементов и количество отрицательных...

Упорядочить по возрастанию элементы каждого столбца матрицы - C++
Задание: Составить программу решения задачи на С++. Вывод матрицы на экран оформить в виде процедуры. Упорядочить по возрастанию...

Упорядочить по возрастанию элементы каждой строки матрицы - C++
Дана матрица размером n*m. Упорядочить по возрастанию элементы каждой строки матрицы. Заранее спасибо за помощь!


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

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

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