• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sortowanie tablicy dwuwymiarowej

Object Storage Arubacloud
0 głosów
7,586 wizyt
pytanie zadane 26 stycznia 2016 w C i C++ przez danielek110795 Użytkownik (820 p.)

#include <stdio.h>
#include <stdlib.h>

const N=4;
const M=4;

void wypelnij_macierz(int tablica[N][M])
{
    int i, j;
    srand(time(NULL));
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
            tablica[i][j]=-10+rand()%21;
}

void wyswietl_macierz(int tablica[N][M])
{
    int i, j;
    for(i=0; i<N; i++)
    {
        for(j=0; j<M; j++)
            printf("%4d", tablica[i][j]);
    puts("");
    }
}

int main()
{
    int tablica[N][M];
    int tablica1[N*M];
    wypelnij_macierz(tablica);
    wyswietl_macierz(tablica);
    return 0;
}

 

Mam pytanko jak teraz posortowac wylosowaną tablice? Poźniej ją znowu chciałbym wypisac ale to już zrobie :P

4 odpowiedzi

+1 głos
odpowiedź 26 stycznia 2016 przez Radfler VIP (101,030 p.)
Potrzebujesz jeszcze odpowiedzi na to pytanie? Pisząc w C trochę się przy tym namęczysz, ale mam na to rozwiązanie :)
komentarz 27 stycznia 2016 przez draghan VIP (106,230 p.)

Pisząc w C trochę się przy tym namęczysz

Nie tak bardzo, to zwykłe sortowanie (tylko dwuetapowe), a więc parę pętelek i gotowe. ;)

EDIT: źle spojrzałem na efekt, myślałem że kolega chce dostać posortowane tablice wewnętrzne i posortować owe tablice w tablicy zewnętrznej.
Ale wrzucenie wszystkich danych do wspólnego sortowania też nie jest jakieś wybitnie trudne. :)

komentarz 27 stycznia 2016 przez Radfler VIP (101,030 p.)

Szczerze to napisałem tak, bo miałem wrażenie że koleś totalnie olał temat i chyba się nie myliłem. Poza tym jeżeli trochę się pomyśli, to można dojść do wniosku, że statyczną tablicę x wymiarową można posortować nawet algorytmem qsort:

#include <stdio.h>
#include <stdlib.h>

int compare(const void* lhs, const void* rhs) {
    
    int left = *(const int*)lhs;
    int right = *(const int*)rhs;
    
    if(left < right) {
        return -1;
    } else if(left > right) {
        return 1;
    }
    
    return 0;
    
}
 
int main(void) {
    
    int array[3][3] = {
        {4, 7, 1},
        {3, 6, 9},
        {2, 8, 5}
    };
    
    size_t elementSize = sizeof(array[0][0]);
    size_t arraySize = sizeof(array) / elementSize;
    
    qsort(&array[0][0], arraySize, elementSize, &compare);
    
    for(int i = 0; i < 3; ++i) {
        for(int j = 0; j < 3; ++j) {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    
}
komentarz 27 stycznia 2016 przez draghan VIP (106,230 p.)
Statyczną owszem, bo jest ułożona w ciągłym obszarze pamięci. Za ładne rozwiązanie, upvote ode mnie. :)
komentarz 27 stycznia 2016 przez Radfler VIP (101,030 p.)
Dziękuję bardzo ^^
0 głosów
odpowiedź 26 stycznia 2016 przez Patrycjerz Mędrzec (192,320 p.)

Co to znaczy posortować? Skonkretyzuj swoje oczekiwania...

komentarz 26 stycznia 2016 przez danielek110795 Użytkownik (820 p.)
np. z tablicy:

2 12 5

3  5  7

zrobić:

2  3  5

5  7  12
0 głosów
odpowiedź 26 stycznia 2016 przez Michał628496 Pasjonat (17,340 p.)

Jak chcesz posortować ?

tak:

1 2 3 4
5 6 7 8

?

komentarz 26 stycznia 2016 przez danielek110795 Użytkownik (820 p.)
Dokladnie :D
0 głosów
odpowiedź 27 stycznia 2016 przez maly Nałogowiec (37,190 p.)
void sort(int *buff, int width, int height)
{
	// tu dzialsz jak na zwyklej jednowymiarowej tablicy o rozmiarze width*height
}

int tablica[N][M];
 
sort(*tablica, N, M);

 

Podobne pytania

0 głosów
0 odpowiedzi 1,038 wizyt
pytanie zadane 22 maja 2019 w C i C++ przez resu Nowicjusz (120 p.)
0 głosów
1 odpowiedź 593 wizyt
pytanie zadane 21 maja 2019 w C i C++ przez dudduss76 Początkujący (280 p.)
0 głosów
0 odpowiedzi 771 wizyt
pytanie zadane 14 stycznia 2018 w C i C++ przez dudus01 Nowicjusz (120 p.)

92,626 zapytań

141,488 odpowiedzi

319,851 komentarzy

62,009 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...