10.17. Učitati članove i sortirati ih po rastućem redoslijedu. (5 članova niza)

j - indeks člana niza koji se poredi sa svim članovima do kraja
i - indeks člana niza koji se poredi

Tabela 10.13. Sort niza

**

Prolaz

Članovi niza

Indeks

Opis

1

Ne sortiran niz

3 9 8 2 5

j i

Zamjena

2

1. prolaz

3 9 8 2 5

1 2

 

3

 

3 9 8 2 5

  3

 

4

 

3 9 8 2 5

  4

Da

5

 

2 9 8 3 5

  5

 

6

 

2

  5

1. cifra poslije prvog prolaza

7

2. prolaz

  9 8 3 5

2 3

Da

8

 

  3 8 9 5

  4

 

9

 

  3 8 9 5

  5

 

10

 

  3

  5

2. cifra poslije drugog prolaza

11

3. prolaz

    8 9 5

3 4

 

12

 

    8 9 5

  5

Da

13

 

    5 9 8

 

 

14

 

    5

 

3. cifra poslije trećeg prolaza

15

4. prolaz

      9 8

 

Da

16

 

      8 9

 

Izmjena

17

 

      8 9

 

4. i 5. cifra poslije četvrtog prolaza

18

Sortiran niz

2 3 5 8 9

 

 

 

Tabela 10.14. Sort niza

**

Listing programa

Opis

1

PROGRAM NIZ_SORT;

Zaglavlje

2

CONST

 

3

  n = 5;

Broj članova niza

4

VAR

 

5

 i, j, pom : INTEGER;

Promjenljive

6

 X : ARRAY [1..n] OF INTEGER;

Niz

7

BEGIN

 

8

  WRITELN Sort niza');

Naslov

9

  FOR i := 1 TO n DO  {ulaz}

Upis članova niza

10

    BEGIN

 

11

      WRITE(i,' --> ');

 

12

      READLN(X[i]);

 

13

    END;

 

14

  FOR j := 1 TO  n - 1 DO

Prvi iz skupine

15

    FOR i := j+1 TO n DO

 

16

      IF X[j] > X[i] THEN

? dobar redoslijed

17

        BEGIN

Nije

18

          pom := X[j];

Zamjena

19

          X[j] := X[i];

 

20

          X[i] := pom;

 

21

        END;

 

22

  FOR i := 1 TO n DO  {izlaz}

Ispis sortiranih članova

23

    WRITELN('X[',i,'] = ', X[i]);

 

24

END.

Kraj programa

 

j - indeks opsega članova niza koji se porede
i - indeks člana niza koji se poredi sa susjednim članom

Tabela 10.15. Sort niza

**

Prolaz

Članovi niza

Indeks

Opis

1

Ne sortiran niz

3 9 8 2 5

j i

Zamjena

2

1. prolaz

3 9 8 2 5

5 4

 

3

 

3 9 8 2 5

  3

Da

4

 

3 9 2 8 5

  2

Da

5

 

3 2 9 8 5

  1

Da

6

 

2 3 9 8 5

  

 

7

 

2

  

1. cifra

8

2. prolaz

  3 9 8 5

4 3

Da

9

 

  3 9 5 8

  2

Da

10

 

  3 5 9 8

  1

 

11

 

  3

  

2. cifra

12

3. prolaz

    5 9 8

3 2

Da

13

 

    5 8 9

  1

 

14

 

    5 9 8

 

 

15

 

    5

 

3. cifra

16

4. prolaz

      9 8

2 1

Da

17

 

      8 9

 

4. i 5. cifra

18

Sortiran niz

2 3 5 8 9

 

 

Tabela 10.16. Sort niza

**

Listing programa

Opis

1

PROGRAM NIZ_SORT;

Zaglavlje

2

CONST

 

3

  n = 5;

Broj članova niza

4

VAR

 

5

 i, j, pom : INTEGER;

Promjenljive

6

 X : ARRAY [1..n] OF INTEGER;

Niz

7

BEGIN

 

8

  WRITELN ('Sort niza');

Naslov

9

  FOR i := 1 TO n DO  {ulaz}

Upis članova niza

10

    BEGIN

 

11

      WRITE(i,' --> ');

 

12

      READLN(X[i]);

 

13

    END;

 

14

  FOR j := n - 1 DOWNTO 1 DO

Susjedni član

15

    FOR i := j DOWNTO 1 DO

Poredi sa ostalim

16

      IF X[i] < X[i + 1] THEN

? dobar redoslije, susjedni

17

        BEGIN

Nije

18

          pom := X[i];

Zamjena

19

          X[i] := X[i + 1];

 

20

          X[i + 1] := pom;

 

21

        END;

 

22

  FOR i := 1 TO n DO  {izlaz}

Ispis sortiranih članova

23

    WRITELN('X[',i,'] = ', X[i]);

 

24

END.

Kraj programa

Poboljšanje algoritma: u dio promjene dodati indikator SEM i provjeru (linije 15 do 21). Proces sortiranja izvoditi samo ako je bila zamjena u prethodnom prolazu.

Listing programa:

PROGRAM P10711001;
USES
  WinCrt;
CONST
  n = 5;
VAR
 i, j, pom : INTEGER;
 X : ARRAY [1..n] OF INTEGER;
BEGIN
  WRITELN ('Sort niza');
  FOR i := 1 TO n DO  {ulaz}
    BEGIN
      WRITE(i,' --> ');
      READLN(X[i]);
    END;
  FOR j := n - 1 DOWNTO 1 DO
    FOR i := j DOWNTO 1 DO
      IF X[i] < X[i + 1] THEN
        BEGIN
          pom := X[i];
          X[i] := X[i + 1];
          X[i + 1] := pom;
        END;
  FOR i := 1 TO n DO  {izlaz}
    WRITELN('X[',i,'] = ', X[i]);
END.

Izvođenje programa:

Index