Skocz do zawartości
Marmot

Schemat blokowy dowolnego algorytmu sortowania

Rekomendowane odpowiedzi

Witam.

 

Bardzo pilnie potrzebuję schemat blokowy jakiegoś najprostszego algorytmu do sortowania elementów tablicy. Potrzebne mi to na sprawdzian z informatyki, a jak szukałem czegoś, to znajdowałem tylko kod C++a, którego kompletnie nie znam :) . Oczywiście, nie musi być schemat blokowy, może być nawet słowne wyjaśnienie co po kolei się dzieje, bylebym mógł ułożyć z tego schemat blokowy :) . Liczę na waszą pomoc :) .

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Daj mi ten kod C++ to ja spróbuję coś wykombinować.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

O ile się nie mylę, większość języków posiada funkcję do sortowania, więc algorytm wyglądałby tak:

 

 

start

|

V

stwórz tablice [..]

|

V

sortuj (sort(tablica))

|

V

end

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

oja uslyszalbym to pytanie jakies 2 lata temu? Mysle ze bym ci umial odpowiedziec,a teraz to juz tylko zabawa i kobiety w glowie ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie mów że nie znasz :)

#include<iostream>

int main()
{
    int size = 4;
    int array[size];
    array[0] = 1;
    array[1] = 533;
    array[2] = 0;
    array[3] = 42;
    array[4] = 4;
    
    bool sort = 0; //0 - najmniejsze na gorze, 1 - najwieksze na gorze.
    int temp;
    for( int n = 1; n <= size; n++ )
    {
        if( ( ( array[n-1] < array[n] ) && sort ) || ( ( array[n-1] > array[n] ) && !sort ) )
        {
            temp = array[n-1];
            array[n-1] = array[n];
            array[n] = temp;
            
            n = 1;
        }
    }
    
    for( int n = 0; n <= size; n++ )
    {
        std::cout << array[n] << std::endl;
    }
    
    system("PAUSE");
}

Ew. do porawki.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dobra, dobra. Teoretycznie mógłbym to już przełożyć na blokowy schemat, gdybym wiedział o co chodzi z tą c++ową pętlą for i z tym IF o co chodzi ;p . Ja o C++ mam zerowe pojęcie, a w pascalu FOR wygląda zupełnie inaczej :/ .

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

for( start; warunek; krok; )
{
    reszta kodu;
}

Najpierw robię element start, później sprawdzam warunek, jeśli true to wykonuję krok i resztę kodu, później znowu sprawdzam warunek i jeśli true to wykonuje krok i resztę kodu - itd. itd. jeśli z warunku wychodzi false to wtedy break :)

 

Można w sumie ją zapisać tak:

start;
while( warunek )
{
    krok;
    reszta kodu;
}

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

for przyjmuje 3 argumenty. Pierwszy to zmienną tworzona w pętli mająca określoną wartość. Drugi to ustalenie tak jakby do kiedy ma się wykonywać czyli w tym przypadku aż będzie większe lub równe size. I ostatni argument, to określenie jakim sposobem czyli tutaj inkrementacja :).

 

edit:

// :P

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

@Tymon: wiem na czym polega for, ale nie rozumiałem poprostu tego ostatniego z dwoma plusami, dopiero teraz sobie to skojarzyłem z GM ;p .

 

Czyli to będzie wyglądać tak?:

START
\/
Podaj rozmiar tablicy (size)
Podaj wartości do tablicy (array[size])
\/
sort:=false
temp:=0
\/
for n:=1 to size -> if array[n-1] < array[n] & sort OR array[n-1] > array[n] AND NOT sort -> temp:=array[n-1] -> array[n-1]:=array[n] -> array[n]:=temp -> n:=1
\/
Wyświetl tablicę
\/
STOP

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

n++? xD przeciez tzn to samo co w GM n+=1 xD

Co ty nigdy nie pisałeś skryptów dla map w call of Duty xD?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Wiem co to znaczy n++, tylko nie rozumiałem składni tego for, takie skomplikowane to xD . A skryptów do CoD nie pisałem ^^ .

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

W sumie sort mógłbyś wywalić:

START
\/
Podaj rozmiar tablicy (size)
Podaj wartości do tablicy (array[size])
\/
temp:=0
\/
for n:=1 to size -> if array[n-1] > array[n] -> temp:=array[n-1] -> array[n-1]:=array[n] -> array[n]:=temp -> n:=1
\/
Wyświetl tablicę
\/
STOP

:)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Ok, dzięki za pomoc :) .

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×