C++ quick sort 퀵 정렬 void quickSort(vector& nums, int l, int r) { if (l >= r) return; int mid = partition(nums, l, r); quickSort(nums, l, mid); quickSort(nums, mid + 1, r); } int partition(vector& nums, int l, int r) { int pivot = nums[l]; while (l = pivot) r--; nums[l] = nums[r]; while (l < r && nums[l]
Java로 구현한 합병 정렬입니다. 배열을 반으로 나눠서 오른쪽이 왼쪽의 숫자보다 작으면 이동시키는 것을 반복합니다. class MergeSort { void mergesort(int[] array) { int[] helper = new int[array.length]; mergesort(array, helper, 0, array.length - 1); } void mergesort(int[] array, int[] helper, int low, int high) { if (low < high) { int middle = (low + high) / 2; mergesort(array, helper, low, middle); mergesort(array, helper, middle + 1, high); me..
Map charMap2 = new HashMap(); charMap2 = charMap.entrySet().stream() .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, // key가 충돌할때 어떤 key를 선택할지 LinkedHashMap::new)); // LinkedHashMap으로 생성해야 순서가 유지됨
C언어 quick sort 예제입니다. int data[7] = { 3, 5, 1, 2, 6, 9, 7 }; void swapInt(int & a, int & b) { int tmp = a; a = b; b = tmp; } void printArr(int arr[]) { printf("arr="); for (int i = 0; i < 7; i++) { printf("%d ", arr[i]); } printf("\n"); } void quickSort(int arr[], int left, int right) { printf("left=%d right=%d\n", left, right); int i = left; int j = right; printArr(arr); int pivotIndex = (left ..
- Total
- Today
- Yesterday