Изменить алгоритм быстрой сортировки так, чтобы сортировалось от наименьшего к наибольшему - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Есть программа сортировки случайных чисел в матрице методом быстрой сортировки. Сортирует элементы строк от найбольшего к найменьшему. Пожскажите как переделать что бы сортировало элементы столбцов от найменьшего к наибольшему, пожалуйста! Код:
Листинг программы
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstdlib>
  4. #include <iomanip>
  5. #include <time.h>
  6. using namespace std;
  7. int tab[10][10];
  8. int create()
  9. {
  10. cout<<"Massiv s elementami <100: ***"<<endl<<endl;
  11. srand(32);
  12. for(int a=0;a<10;a++)
  13. {
  14. for(int b=0;b<10;b++)
  15. {
  16. tab[a][b]=rand()%100;
  17. cout<<setw(3)<<tab[a][b];
  18. }
  19. cout<<endl<<endl;
  20. }
  21. }
  22. int quick_sort(int tab[10][10],int left,int right)
  23. {
  24. int a,b,med,zm;
  25. for(a=0;a<10;a++)
  26. {
  27. b=((left+right)/2);
  28. med=tab[a][b];
  29. tab[a][b]=tab[a][right];
  30. for(b=zm=left;b<right;b++)
  31. {
  32. if(tab[a][b]>right)
  33. {
  34. swap(tab[a][b],tab[a][zm]);
  35. zm++;
  36. }
  37. }
  38. tab[a][right]=tab[a][zm];
  39. tab[a][zm]=med;
  40. if(left<zm-1)
  41. quick_sort(tab,left,zm-1);
  42. if(zm+1<right)
  43. quick_sort(tab,zm+1,right);
  44. }
  45. }
  46. int main()
  47. {
  48. create();
  49. cout<<"Otsorterovanyj massiv: "<<endl<<endl;
  50. quick_sort(tab,0,9);
  51. for(int a=0;a<10;a++)
  52. {
  53. for(int b=0;b<10;b++)
  54. {
  55. cout<<setw(3)<<tab[a][b];
  56. }
  57. cout<<endl<<endl;
  58. }
  59. return 0;
  60. }

Решение задачи: «Изменить алгоритм быстрой сортировки так, чтобы сортировалось от наименьшего к наибольшему»

textual
Листинг программы
  1. void transpose(int matrix[5][5]) //либо int matrix[][5], либо int (*matrix)[5]
  2. {
  3.     int t;
  4.     for(int i = 0; i < 5; ++i)
  5.     {
  6.         for(int j = i; j < 5; ++j)
  7.         {
  8.             t = matrix[i][j];
  9.             matrix[i][j] = matrix[j][i];
  10.             matrix[j][i] = t;
  11.         }
  12.     }
  13. }

Объяснение кода листинга программы

В данном коде реализуется функция transpose, которая выполняет перестановку строк в квадратной матрице. Список действий в коде:

  1. Входной параметр функции — это двумерный массив (матрица) int matrix[5][5].
  2. Создается вспомогательная переменная t, которая будет использоваться для временного хранения значения.
  3. Запускается два вложенных цикла. Первый цикл идет по строкам от 0 до 4 (включительно), а второй — по столбцам от текущей строки до 4 (включительно).
  4. Во время каждой итерации внутреннего цикла, значение ячейки matrix[i][j] копируется в переменную t.
  5. Затем, значения ячеек matrix[i][j] и matrix[j][i] меняются местами.
  6. Значение t (которое изначально содержало значение ячейки matrix[i][j]) присваивается ячейке matrix[j][i].
  7. По завершении двух вложенных циклов, строки в матрице будут переставлены таким образом, что элементы одного столбца будут расположены последовательно в каждой строке. Стоит отметить, что данный код будет работать некорректно, если размер матрицы будет меньше 5х5.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы