Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2009, 16:10   #1
savra
search money
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 46
По умолчанию Сортировка двумерного массива в С(Си)

Помогите разобраться с сортировкой пожалуйста.

Я сделал сортировку по строкам(соответственно по столбцам тоже могу), а можно ли отсортировать массив вот по такому типу, если можно то как?:

исходная матрица:
8 6 9 4
3 9 4 7
1 7 2 9
3 7 5 1

после сортировки:
1 1 2 3
3 4 4 5
6 7 7 7
8 9 9 9

Методом "Пузырька"

Код:
/*Сортировка двумерного массива*/

#include <stdio.h>
#include <conio.h>

void main()
{
   clrscr();
   const int raw = 20, col = 20;
   int a[raw][col], i, j, n, k, tmp, m;

   printf("Введите размер матрицы: ");
   scanf("%d", &n);
   printf("\n");

   for(i = 0; i < n; i++)
   {
      for(j = 0; j < n; j++)
      {
          printf("a[%d][%d] = ", i, j);
	  scanf("%d", &a[i][j]);
      }
    }

    for(i = 0; i < n; i++)
    {
       printf("\n");

       for(j = 0; j < n; j++)
       {
          printf("%d ", a[i][j]);
       }
     }

     for(i = 0; i <= n; i++)
     {
        for(k = 0; k <= n; k++)
	{
	   if (a[i][k] > a[i][k + 1])
	   {
	      tmp = a[i][k];
	      a[i][k] = a[i][k + 1];
	      a[i][k + 1] = tmp;
	   }
	 }
      }

      for(i = 0; i < n; i++)
      {
         printf("\n");

	 for(j = 0; j < n; j++)
	 {
	    printf("%d", a[i][j]);
	 }
       }

       getch();
}

Последний раз редактировалось savra; 25.11.2009 в 18:07.
savra вне форума Ответить с цитированием
Старый 25.11.2009, 20:01   #2
UnChanter
Пользователь
 
Аватар для UnChanter
 
Регистрация: 14.12.2008
Сообщений: 65
По умолчанию

В С не разбираюсь... Но что нам мешает прочесть двумерный массив в одномерный, отсортировать его пузырьком, а потом уже вывести его как двумерный.
т.е. :
Код:
 for(i = 0; i < n*n; i++)
    {        читаем в a[i]    }
  ....
  сортируем массив
  ....
  выводим его как двумерный
UnChanter вне форума Ответить с цитированием
Старый 26.11.2009, 00:29   #3
savra
search money
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 46
По умолчанию

Ну да, я понял, что надо перевести в одномерный, только реализовать это у меня никак не получается(
savra вне форума Ответить с цитированием
Старый 26.11.2009, 08:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну и че тут сложного? координаты корректируешь и делов то:
Код:
#include <iostream.h>
...
{
 int a[3][3]={{2,5,2},{6,7,3},{1,9,8}},x,y,q,w;
 for (int i=0;i<3*3;i++){
  y=(i/3);   x=i-y*3;
  for (int k=0;k<=i;k++){
   q=(k/3);   w=k-q*3;
   if  (a[y][x]>a[q][w]){
	int e=a[y][x];
	a[y][x]=a[q][w];
	a[q][w]=e;
   }
  }
 // cout<<a[y][x]<<'\t';
 }
 for (int i=0;i<3;i++){
  for (int j=0;j<3;j++) cout<<a[i][j]<<'\t';
  cout<<"\n";
 }

 cin.get();
	return 0;
}
смысл понятен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.11.2009, 09:08   #5
savra
search money
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 46
По умолчанию

Большущее спасибо! Все конечно прекрасно работает, но хотелось бы разобраться. Собственно вот тут что то не понятно...

Код:
  for (int i=0;i<3*3;i++){
  y=(i/3);   x=i-y*3;
  for (int k=0;k<=i;k++){
  q=(k/3);   w=k-q*3;

Последний раз редактировалось savra; 26.11.2009 в 10:09.
savra вне форума Ответить с цитированием
Старый 26.11.2009, 10:47   #6
savra
search money
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 46
По умолчанию

Все, я разобрался что там делается. Всем спасибо)
savra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного массива Makarov Помощь студентам 8 29.10.2011 11:55
Сортировка двумерного массива(С) Александр Елис Помощь студентам 1 31.10.2009 13:25
Сортировка двумерного массива Dwaight$ Помощь студентам 1 27.05.2009 03:14
сортировка двумерного массива cornholio Помощь студентам 1 27.11.2007 23:36