ABOUT ME

-

  • 선택 정렬, 버블 정렬, 퀵 정렬, 삽입 정렬
    개발 지식/알고리즘 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;
        }

    '개발 지식 > 알고리즘' 카테고리의 다른 글

    메모리 관리  (0) 2020.06.30
    Linked List  (0) 2020.06.29
    포인터, 매개변수, CBV, CBR  (0) 2020.06.29
    배열 접근  (0) 2020.06.29
    infix, postfix  (0) 2020.06.29

    댓글

Designed by Tistory.