Untitled

 avatar
unknown
java
a year ago
3.4 kB
4
Indexable
import java.util.*;
import java.io.*;
public class Main{
    static class FastReader{
        BufferedReader br;
        StringTokenizer st;
        public FastReader(){
            br=new BufferedReader(new InputStreamReader(System.in));
        }
        String next(){
            while(st==null || !st.hasMoreTokens()){
                try {
                    st=new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
        int nextInt(){
            return Integer.parseInt(next());
        }
        long nextLong(){
            return Long.parseLong(next());
        }
        double nextDouble(){
            return Double.parseDouble(next());
        }
        String nextLine(){
            String str="";
            try {
                str=br.readLine().trim();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return str;
        }
    }
    static class FastWriter {
		private final BufferedWriter bw;
		public FastWriter() {
			this.bw = new BufferedWriter(new OutputStreamWriter(System.out));
		}
		public void print(Object object) throws IOException {
			bw.append("" + object);
		}
		public void println(Object object) throws IOException {
			print(object);
			bw.append("\n");
		}
		public void close() throws IOException {
			bw.close();
		}
	}
	
	public static void swap(int i, int j, int[]arr){
	    int temp = arr[i];
	    arr[i] = arr[j];
	    arr[j] = temp;
	}
	
	public static int partition(int l, int r, int[] arr){
	    int pvt = l;
	    int i = l,j = r;
	    while(i<j){
	        while(i<r && arr[pvt]<=arr[i]){
	            i++;
	        }
	        while(j>l && arr[pvt]>arr[j]){
	            j--;
	        }
	       // System.out.println(arr[i]+" "+arr[j]+" "+arr[pvt]);
	        if(i<j) swap(i,j,arr);
	       // for(int x:arr){
	       //     System.out.print(x+" ");
	       // }
	       // System.out.println();
	    }
	    swap(j,pvt,arr);
	    return j;
	   
	}
	public static void quickSort(int l, int r, int[]arr){
	    if(l<r){
	        int p = partition(l,r,arr);
	       // for(int i:arr){
	       //     System.out.print(i+" ");
	       // }
	       // System.out.println();
	        quickSort(l,p-1,arr);
	        quickSort(p+1,r,arr);

	    }
	}
	
    public static void main(String[] args) {
        try {
            FastReader sc=new FastReader();
            FastWriter out = new FastWriter();
            
            //write code here
            Random rnd = new Random();
        	    int n = sc.nextInt();
                int[] arr = new int[n];
                for(int i = 0; i<n;i++){
                    arr[i] = sc.nextInt();
                }
                for(int i = 0;i<n;i++){
                    
                    int j = rnd.nextInt(n-1);
                    swap(i,j,arr);
                }
                quickSort(0,n-1,arr);
                for(int i:arr){
                    System.out.print(i+" ");
                }
            out.close();
        
        }
        catch (Exception e) {
            e.printStackTrace() ;
            return;
        }
    }
    
}
Editor is loading...
Leave a Comment