Untitled
unknown
java
a year ago
3.4 kB
15
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