Pagini recente » Cod sursa (job #2404040) | Cod sursa (job #1948142) | Cod sursa (job #1511096) | Cod sursa (job #1705854) | Cod sursa (job #1511065)
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.*;
public class Mergesort {
// static int[] merg(int[] vector, int s, int d){
// if(s == d - 1){
// int[] rez = new int[2];
// if(vector[s] > vector[d]){
// rez[0] = d;
// rez[1] = s;
// }
// else{
// rez[0] = s;
// rez[1] = d;
// }
// return rez;
// }
//
// int[] rez = new int[d - s + 1];
// int mij = s + (d - s) / 2;
// int[] stanga = merg(vector, s, mij);
// int[] dreapta = merg(vector, mij + 1, d);
// int i = 0;
// int j = 0;
// int ns = stanga.length;
// int nd = dreapta.length;
// int k = 0;
// while(i < ns && j < nd){
// if(stanga[i] < stanga[j]){
// vector[s] = stanga[i];
// rez[k] = stanga[i];
// s += 1;
// i += 1;
// k += 1;
// }
// else{
// vector[s] = dreapta[j];
// rez[k] = dreapta[i];
// j += 1;
// s += 1;
// k += 1;
// }
// }
// for(; i < ns; i++, s++, k++){
// vector[s] = stanga[i];
// rez[k] = stanga[i];
// }
// for(; j < nd; j++, s++, k++){
// vector[s] = dreapta[j];
// rez[k] = dreapta[j];
// }
// return rez;
// }
static ArrayList<Integer> merg2(ArrayList<Integer> vector, int s, int d){
ArrayList<Integer> rez = new ArrayList<Integer>();
if(s == d - 1){
if(vector.get(s) > vector.get(d)){
rez.add(vector.get(d));
rez.add(vector.get(s));
}
else{
rez.add(vector.get(s));
rez.add(vector.get(d));
}
return rez;
}
if(s == d){
rez.add(vector.get(s));
return rez;
}
int mij = s + (d - s) / 2;
ArrayList<Integer> stanga = merg2(vector, s, mij);
ArrayList<Integer> dreapta = merg2(vector, mij + 1, d);
int i = 0;
int j = 0;
int ns = stanga.size();
int nd = dreapta.size();
while(i < ns && j < nd){
if(stanga.get(i) < dreapta.get(j)){
rez.add(stanga.get(i));
i += 1;
}
else{
rez.add(dreapta.get(j));
j += 1;
}
}
for(; i < ns; i++)
rez.add(stanga.get(i));
for(; j < nd; j++)
rez.add(dreapta.get(j));
return rez;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Scanner in = new Scanner(new FileReader("algsort.in"));
int n = in.nextInt();
ArrayList<Integer> vector = new ArrayList<Integer>();
for(int i = 0; i < n; i++){
int x = in.nextInt();
vector.add(x);
}
in.close();
vector = merg2(vector, 0, n - 1);
PrintWriter out = new PrintWriter("algsort.out", "UTF-8");
for(int i = 0; i < n; i++)
out.print(vector.get(i).toString() + " ");
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}