Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

помогите разобраться с сортировкой

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
lavan



Зарегистрирован: 20.02.2008
Сообщения: 10

СообщениеДобавлено: Чт Мар 19 2009 21:56    Заголовок сообщения: помогите разобраться с сортировкой Ответить с цитатой

подскажите кто знает.я уже запарился.
надо сгенерировать квадратную матрицу n*n и сортировать ее в порядке возрастания.
у меня проблема в том,что цикл отвечающий за сортировку(сортирую прямым перебором.язык С)сортирует массив но он заменяет там цифры
т.е есть такой набор
8 6 9 5 0
получаю после сортировки
0 5 5 8 9
т.е 6 заменилась на 5 вместо исходной одной 5 и 6 стало две 5.из -за этого последняя строка матрици,вообще не сортируется.ПОДСКАЖИТЕ ЧТО ДЕЛАТЬ??
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define M 5
#define N 5
int main(){
int m[M][N];
int a[M];
int i,j,buf,min,k;
printf("sgener mas\n");
randomize();
for(i=0;i<M;i++) {
printf("\n");
for(j=0;j<N;j++) {
m[i][j]=random(10);
printf("%3d",m[i][j]);
}
}

for(i=0;i<M;i++){//prisvaivaem a[i]
printf("\n"); //znachenia m[i][j]
for(j=0;j<N;j++){
a[i]=m[i][j];
//printf("%d",a[i]);
}
}

for(i=0;i<M*N-1;i++){ //sortiryem a[i]
min=i;
for(j=i+1;j<M*N;j++)
if(a[j]<a[min])
min=j;
buf=a[i];
a[i]=a[min];
a[min]=buf;
}
for(i=0;i<M;i++){ //teper prisvaivaem m[i][j]
for(j=0;j<N;j++){ //otsortir massiv a[i]
m[i][j]=a[i];
printf("\n otsort mas\n");
for(i=0;i<M;i++){
printf("\n");
for(j=0;j<N;j++) {
printf("%3d",m[i][j]);
}
}
}
}
getch();
return(0);
}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Benzedrin



Зарегистрирован: 04.04.2008
Сообщения: 34
Откуда: Minsk

СообщениеДобавлено: Пт Мар 20 2009 10:55    Заголовок сообщения: Ответить с цитатой

Цитата:
for(i=0;i<M*N-1;i++){ //sortiryem a[i]
min=i;
for(j=i+1;j<M*N;j++)
if(a[j]<a[min])
min=j;
buf=a[i];
a[i]=a[min];
a[min]=buf;
}

смотри в сторону скобок после второго for, и по-мойму последовательность присвоений значений следует выполнять только при выполнении If..., т.к. если у тебя будет большой объем данных для анализа, то каждая операция процессора на счету, и поизводительность критична(короче привиай хорошую привычку)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...