归并模板

    技术2022-07-10  125

    package No1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StreamTokenizer; public class Main { public static void main(String[] args) throws IOException { StreamTokenizer in = new StreamTokenizer(new BufferedReader( new InputStreamReader(System.in))); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); in.nextToken(); int n = (int) in.nval; int arr[] = new int[n]; int temp[] = new int[n]; for (int i = 0; i < n; i++) { in.nextToken(); arr[i] = (int) in.nval; } merge_sort(arr, temp, 0, n - 1); for (int i = 0; i < n; i++) { out.print(arr[i] + " "); } out.flush(); } public static void merge_sort(int arr[], int temp[], int l, int r) { if (l >= r) return; int mid = (l + r) / 2; merge_sort(arr, temp, l, mid); merge_sort(arr, temp, mid + 1, r); int k = 0, i = l, j = mid + 1; while (i <= mid && j <= r) { if (arr[i] < arr[j]) temp[k++] = arr[i++]; else temp[k++] = arr[j++]; } while (i <= mid) temp[k++] = arr[i++]; while (j <= r) temp[k++] = arr[j++]; for (i = l, j = 0; i <= r; i++, j++) { arr[i] = temp[j]; } } }
    Processed: 0.010, SQL: 9