Cod sursa(job #1511066)

Utilizator aaa123aa aaa aaa123 Data 25 octombrie 2015 23:36:42
Problema Sortare prin comparare Scor 60
Compilator java Status done
Runda Arhiva educationala Marime 1.86 kb
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.*;


public class Main {

	static ArrayList<Integer> merg(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 = merg(vector, s, mij);
		ArrayList<Integer> dreapta = merg(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 = merg(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();
		}
	}

}