Riešenia (skupina A, 2. týždeň)

Praktické cvičenie

import java.util.Arrays;

public class Cvicenie {

        public static boolean jeUsporiadane(int[] p) {
                for (int i = 0; i < p.length - 1; i++)
                        if (p[i] > p[i + 1])
                                return false;

                return true;
        }

        public static int binarneHladajIndex(int[] p, int hodnota) {
                int odIdx = 0;
                int poIdx = p.length - 1;
                while (odIdx <= poIdx) {
                        int stredIdx = (odIdx + poIdx) / 2;
                        if (p[stredIdx] == hodnota)
                                return stredIdx;

                        if (p[stredIdx] < hodnota) {
                                // Hladame vpravo
                                odIdx = stredIdx + 1;
                        } else {
                                // Hladame vlavo
                                poIdx = stredIdx - 1;
                        }
                }

                return -1;
        }

        public static void main(String[] args) {
                int[] p = { 4, 6, 1, 9, 10 };
                //System.out.println(jeUsporiadane(p));
                TriediaciAlgoritmus alg = new SelectionSort();
                System.out.println(Arrays.toString(p));
                alg.utried(p);
                System.out.println(Arrays.toString(p));
        }
}
public class SelectionSort extends TriediaciAlgoritmus {

        @Override
        protected void utried(int dlzkaPola) {
                for (int i = 0; i < dlzkaPola - 1; i++) {

                        int minIdx = i;
                        for (int j = i + 1; j < dlzkaPola; j++)
                                if (porovnaj(j, minIdx) < 0)
                                        minIdx = j;

                        vymen(i, minIdx);
                }

        }

}

import java.util.Arrays;

public class Cvicenie {

        public static boolean jeUsporiadane(int[] p) {
                return false;
        }

        public static int binarneHladajIndex(int[] p, int hodnota) {
                int odIdx = 0;
                int poIdx = p.length-1;

                while (odIdx <= poIdx) {
                        int stredIdx = (odIdx + poIdx) / 2;
                        if (p[stredIdx] == hodnota) {
                                return stredIdx;
                        }

                        if (hodnota < p[stredIdx]) {
                                // Vlavo
                                poIdx = stredIdx - 1;
                        } else {
                                // Vpravo
                                odIdx = stredIdx + 1;
                        }
                }

                return -1;
        }

        public static void main(String[] args) {
                int[] p = {4, 7, 1, 4, 8, 2};
                TriediaciAlgoritmus triedic = new BubbleSort();
                System.out.println(Arrays.toString(p));
                triedic.utried(p);
                System.out.println(Arrays.toString(p));
        }

}
public class BubbleSort extends TriediaciAlgoritmus {

        @Override
        protected void utried(int dlzkaPola) {
                boolean bolaVymena;
                int uzNaMieste = 0;
                do {
                        bolaVymena = false;

                        for (int i = 0; i < dlzkaPola - 1 - uzNaMieste; i++)
                                //if (p[i] > p[i + 1]) {
                                if (porovnaj(i, i+1) > 0) {
                                        vymen(i, i + 1);
                                        bolaVymena = true;
                                }

                        uzNaMieste++;

                } while (bolaVymena);
        }

}