From 668a00981c19fdd773e75eb012707d9c85ebd957 Mon Sep 17 00:00:00 2001 From: wl <1075749530@qq.com> Date: Tue, 12 Jan 2021 19:55:39 +0800 Subject: [PATCH] 123 --- 8/1.java | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 8/1.java diff --git a/8/1.java b/8/1.java new file mode 100644 index 0000000..3d6768d --- /dev/null +++ b/8/1.java @@ -0,0 +1,109 @@ +选择排序 +public void sort(int[] a) { + int N = a.length; + for (int i = 0; i < N; i++) { + int min = i; + for (int j = i + 1; j < N; j++) { + if (a[j] < a[min]) { + min = j; + } + } + swap(a, i, min); + } +} +冒泡排序 +public void sort(int[] a) { + int N = a.length; + for (int i = 0; i < N; i++) { + boolean hasSorted = true; + for (int j = 0; j < N - i - 1; j++) { + if (a[j] > a[j + 1]) { + hasSorted = false; + swap(a, j, j + 1); + } + } + if (hasSorted) { + return; + } + } +} +插入排序 +public void sort(int[] a) { + int N = a.length; + for (int i = 1; i < N; i++) { + for (int j = i; j > 0; j--) { + if (a[j] < a[j - 1]) { + swap(a, j, j - 1); + } + } + } +} +并归排序 +private int[] aux; + +private void merge(int[] a, int l, int m, int h) { + int i = l, j = m + 1; + for (int k = l; k <= h; k++) { + aux[k] = a[k]; + } + for (int k = l; k <= h; k++) { + if (i > m) { + a[k] = aux[j++]; + } else if (j > h) { + a[k] = aux[i++]; + } else if (aux[i] < a[j]) { + a[k] = aux[i++]; + } else { + a[k] = aux[j++]; + } + } +} +快速排序 +private int partition(int[] a, int l, int h) { + int pivot = a[l]; + int left = l; + int right = h; + while (left != right) { + while (left < right && a[right] > pivot) { + right--; + } + while (left < right && a[left] <= pivot) { + left++; + } + if (left < right) { + swap(a, left, right); + } + } + swap(a, l, left); + return left; +} +插入 + + for (int gap=arr.length/2;gap>0;gap/=2){ + for (int i=gap;i=0 && temp0;gap/=2){ + //从第gap个元素,逐个对其所在组进行直接插入排序操作 + for(int i=gap;i=0 && arr[j]