개발 지식/알고리즘

선택 정렬, 버블 정렬, 퀵 정렬, 삽입 정렬

JUTABI 2020. 6. 25. 20:37

JAVA로 작성되었습니다.

 

- 선택 정렬

    public List<Integer> list_selection(List<Integer> list) {
        int least;
        for (int i = 0; i < list.size() - 1; i++) {
            least = i;
            for (int j = i + 1; j < list.size(); j++) {
                if (list.get(least) > list.get(j)) {
                    least = j;
                }
            }
            if (i != least) {
                int temp = list.get(i);
                list.set(i, list.get(least));
                list.set(least, temp);
            }
        }
        return list;
    }

 

-버블 정렬

    public List<Integer> list_bubble(List<Integer> list) {
        for (int i = list.size() - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if(list.get(j) > list.get(j + 1)) {
                    int temp = list.get(j + 1);
                    list.set(j + 1, list.get(j));
                    list.set(j, temp);
                }
            }
        }
        return list;
    }

 

- 퀵 정렬

    public List<Integer> list_quick(List<Integer> list, int left, int right) {
        int pivot = left;
        int low = left + 1;
        int high = right;

        if (right > left) {
            while (low < high) {
                while (list.get(low) <= list.get(pivot) && low < right) {
                    low++;
                }
                while (list.get(high) > list.get(pivot) && high > left) {
                    high--;
                }
                if (low < high) {
                    int temp = list.get(low);
                    list.set(low, list.get(high));
                    list.set(high, temp);
                }
            }
            if (list.get(high) <= list.get(pivot)) {
                int temp = list.get(high);
                list.set(high, list.get(pivot));
                list.set(pivot, temp);
                pivot = high;
            }
            QuickSort quickSort = new QuickSort();
            list = quickSort.list_quick(list, left, pivot - 1);
            list = quickSort.list_quick(list, pivot + 1, right);
        }
        return list;
    }

 

- 삽입 정렬

    public List<Integer> list_insertion(List<Integer> list) {
        for (int i = 1; i < list.size(); i++) {
            int j, value = list.get(i);
            for (j = i - 1; j >= 0 && value < list.get(j); j--) {
                    list.set(j + 1, list.get(j));
            }
            list.set(j + 1, value);
        }
        return list;
    }