can anyone tell me what is wrong in this code?
import java.util.*;
public class Main {
static Scanner scn = new Scanner(System.in);
public static void main(String args[]) {
int n = scn.nextInt();
int[] arr = null;
if (n >= 1 && n <= 100) {
arr = take_input(n);
arr = sorting_linear_time(arr);
int j;
for (j = 0; j < n; j++) {
System.out.println(arr[j]);
}
}
}
public static int[] take_input(int n) {
// int n = scn.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
int tmp = scn.nextInt();
if (tmp >= -100000 && tmp <= 100000) {
arr[i] = tmp;
}
}
return arr;
}
public static int[] sorting_linear_time(int[] arr) {
int low = 0, mid = 0, high = arr.length - 1;
while (mid <= high) {
if (arr[mid] == 0) {
arr = swap(low, mid, arr);
low++;
mid++;
} else if (arr[mid] == 1) {
mid++;
} else {
arr = swap(mid, high, arr);
high--;
}
}
return arr;
}
public static int[] swap(int x, int y, int[] arr) {
int tmp = arr[x];
arr[x] = arr[y];
arr[y] = tmp;
return arr;
}
}