powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сортировка быстрым методом (кусорт)
14 сообщений из 14, страница 1 из 1
Сортировка быстрым методом (кусорт)
    #34478782
errorka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто мне может помочь написать сортирвоку быстрым методом для двухмерного массива. Я написала, но мой метод не принимают,а по другому написать я не могу. Помогите пожалуйста,если не жалко....
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34478852
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибочка вводных мало
0) тебе собственно сам йыщке надо было написать или использовать его для сортировки?
1) покажи что написала
2) скажи в чем притензия, ежели конеччно озвучили
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34478869
errorka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
void Bistrya(int m, int n)
{
i=m;
k=n;
dopoln=matriza[(i+k)/2][j];
do
{
while (fabs(matriza [j])<fabs(dopoln) && i<=n)i++;
while (fabs(matriza[k][j])>fabs(dopoln) && k>=m)k--;
if (i<=k)
{
prom=matriza[j];
matriza[j]=matriza[k][j];
matriza[k][j]=prom;
i++;k--;srav++;per++;
}

}
while (i<=k);
if (m < k)
Bistrya(m, k);
if (i < n)
Bistrya(i, n);

Думаю в переменных можно разобраться... А не понравилось то,что такое уже кто-то писал...
А задача такая: есть массив и его надо отсортировать....
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34478933
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
errorka
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
void Bistrya(int m, int n)
{
i=m;
k=n;
dopoln=matriza[(i+k)/ 2 ][j];
do 
{
  while (fabs(matriza[i][j])<fabs(dopoln) && i<=n)i++;
  while (fabs(matriza[k][j])>fabs(dopoln) && k>=m)k--;
       if (i<=k)
		{
		prom=matriza[i][j];
		matriza[i][j]=matriza[k][j];
		matriza[k][j]=prom;
		i++;k--;srav++;per++;
		}

}
while (i<=k);
if (m < k) 
Bistrya(m, k); 
   if (i < n)
     Bistrya(i, n); 
Думаю в переменных можно разобраться... А не понравилось то,что такое уже кто-то писал...
А задача такая: есть массив и его надо отсортировать....
Должен тебя огорчить разобраться практически невозможно. Ты либо неправильно вырезала либо я чег-то не понимаю. Больше половины переменных не декларированы.Ну и что уж точно можно сказать алгоритм не лежал близко к qsort
Ну и как сортировать эту матрицу? построчно(можно) или по колонкам(нельзя). Матрица чего? или как в классическом qsort void*, сравнивать с помощю оператора < строки матрицы нельзя, тогда нежен критерий сравнения или как в классическм qsort - с помощью указателя на функцию?
Если есть книжка Страуструпа то там точно есть реализация qsort ее только обобщить на случай матрицы
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34478945
errorka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно отсортировать матрицу чисел 10 на 10... Можете помочь? Может мою сортировку лучше не смотреть?
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34478958
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
errorkaНужно отсортировать матрицу чисел 10 на 10... Можете помочь? Может мою сортировку лучше не смотреть?
Отвечай конкретно:
Чего сортировать, строки?
Указатели на функцию проходили?
Шаблоны и прочую ерунду?
Сортировать имено qsort-ом?
А то сейчас насортирую....
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34478975
errorka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
задание: Упорядочить каждый столбец матрицы по убыванию абсолютных величин.
Указатели на фукцию проходили,но я ничего не поняла...
Шаблоны и т.д. нет
Сортировать вообще пятью способами,но у меня не получился именно qsort,а со встакой надеюсь сама как нить попробую еще,но была бы не против от помощи))))
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34479012
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
errorka пишет:

> void Bistrya(int m, int n)

Вряд ли это quick sort. quick sort сложный достаточно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34479090
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно теорию на потом итак сортировать оказывается надо не матрицу а элементы в одной колонке матрицы по некоторому критерию ( в нашем случае по убыванию абсолютных величин, т. е. в порядке обратном fabs) вот только элементы в колонке следуют в массиве не друг за другом, а на расстоянии в n элементов, где n - количество столбцов в таблице.
итак нам потребуется функция сравнения:
Код: plaintext
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
typedef int (*compare)(void *, void* );   // указатель на функцию сравнения

// в нашем случае функция сравнения такая
int my_cpm(void* left, void* right)
{
  double l = fabs(*((double*) left));
  double r = fabs(*((double*) right));
  return l > r ? - 1  : l < r;
}

void swap(char* lptr, char* rptr, size_t sz)
{
  char tmp;
  for (int i =  0 ; i < sz; ++i)
  {
    tmp = lptr[i];
    lptr[i] = rptr[i];
    rptr[i] = tmp;
  }
}

int partition(void* ptr, size_t rows, size_t cols, size_t col, size_t sz, compare cmp)
{
  char* pptr = (char*) ptr + col * sz;
  int i = - 1 ;
  int j = rows;
  while (true)
  {
     char* rptr, lptr =  0 ;
     for(--j; j > 0 ; --j)
     {
        rptr = pptr + j * cols * sz;
        if (cmp(pptr, rptr) >= 0 )
          break;
     }
     for(++i; i != j; ++i)
     {
        lptr = pptr + i * cols * sz;
        if (cmp(pptr, lptr) <= 0 )
          break;
     }
     if (i < j)
       swap(i, j, sz);
     else 
       return j;
  }
}

void column_qsort(void* ptr, size_t rows, size_t cols, size_t col, size_t sz, compare cmp)
{
  if (rows <=  1 )
    return;
  int qrow = partition(pptr, rows, cols, col, sz, cmp);
  column_qsort(pptr, qrow, cols, col, sz, cmp);
  column_qsort(((char*)pptr + (qrow +  1 ) * cols * sz), (rows - qrow), cols, col, sz, cmp)
}

int main()
{
  double matrix[ 10 ][ 5 ];
  for ( int i =  0 ; i <  10 ; ++i)
    column_qsort(matrix,  10 ,  5 , i, sizeof(double), my_cmp); 
}
Ну примерно так, но не отлаживал.
PS дедушка устал и пошел баиньки
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34481619
errorka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таааак все сложно!!!!!!! Так много функций и прочего!!!!
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34481750
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
errorkaТаааак все сложно!!!!!!! Так много функций и прочего!!!!
Дедушка все по учебнику сделал, у может маханул чутка. Ты спрашивай, спрашивай внученька
Зато твой препод тоже ничего не сообразит. Во всяком случае точно разбираться не будет.
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34481875
errorka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот именно что препод сказал,что я буду сдавать эту прогу до последней капли крови(((( Так что надо понять все-все...
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34481913
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
errorkaВот именно что препод сказал,что я буду сдавать эту прогу до последней капли крови(((( Так что надо понять все-все...Тогда тебе прийдется самой прочитать учебник....
читай здесь:
http://en.wikipedia.org/wiki/Quicksort
или здесь:
http://algolist.manual.ru/sort/quick_sort.php
...
Рейтинг: 0 / 0
Сортировка быстрым методом (кусорт)
    #34484659
errorka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пасибо!!! Очень полезные сайты,я о них не знала)))
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сортировка быстрым методом (кусорт)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]