Pagini recente » Cod sursa (job #20516) | Cod sursa (job #2972169) | Cod sursa (job #134894) | Cod sursa (job #2297858) | Cod sursa (job #2290799)
import java.io.*;
import java.util.*;
public class Main {
private static int min(int x, int y) {
return (x < y) ? x : y;
}
public static void main(String[] args) throws Exception {
InputStream inputStream = new FileInputStream("algsort.in");
OutputStream outputStream = new FileOutputStream("algsort.out");
try (InputReader inputReader = new InputReader(inputStream);
PrintWriter printWriter = new PrintWriter(outputStream)) {
int n = inputReader.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = inputReader.nextInt();
}
int[] copy = new int[n];
for (int i = 0; (1 << i) <= n; i++) {
int j = 0, pow = 1 << (i + 1);
boolean flag = true;
while (j < n && flag) {
System.out.println("Sortiere jetzt " + j + " " + (j + pow - 1) + " " + pow);
if (j + (pow >> 1) >= n) {
flag = false;
} else {
int u = j;
int v = j + (pow >> 1);
int p = v;
int q = min(j + pow, n);
int k = 0;
while (u < p && v < q) {
copy[k++] = (a[u] < a[v]) ? a[u++] : a[v++];
}
while (u < p) {
copy[k++] = a[u++];
}
while (v < q) {
copy[k++] = a[v++];
}
for (u = 0; u < k; u++) {
a[j + u] = copy[u];
}
}
j += pow;
}
}
for (int i = 0; i < n; i++) {
printWriter.print(a[i] + " ");
}
}
}
static class InputReader implements AutoCloseable {
private BufferedReader bufferedReader;
private StringTokenizer stringTokenizer;
public InputReader(InputStream inputStream) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
stringTokenizer = null;
}
private String nextToken() {
if (stringTokenizer == null || !stringTokenizer.hasMoreTokens()) {
try {
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return stringTokenizer.nextToken();
}
public int nextInt() {
return Integer.parseInt(nextToken());
}
@Override
public void close() throws Exception {
bufferedReader.close();
}
}
}