Skocz do zawartości

Schemat blokowy dowolnego algorytmu sortowania


Rekomendowane odpowiedzi

Opublikowano

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 :) .

Opublikowano

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

Opublikowano

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

Opublikowano

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.

Opublikowano

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 :/ .

Opublikowano

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;
}

Opublikowano

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

Opublikowano

@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

Opublikowano

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

:)

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

Jedynie 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ę poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...