Sortinginlineartime

import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
sortinginlinear(arr);
Display(arr);
}

public static void sortinginlinear(int arr[]) {
	for (int k = 0; k < arr.length; k++) {
		int l = 0;
		int m = 0;
		int h = arr.length - 1;

		while (m <= h) {
			if (arr[m] == 0) {
				int temp = arr[m];
				arr[m] = arr[l];
				arr[l] = temp;
				l++;
				m++;
			} else if (arr[m] == 1) {
				m++;
			} else {
				int t = arr[h];
				arr[h] = arr[m];
				arr[m] = arr[h];
				h--;
			}
		}
	}
}

public static void Display(int[] arr) {
	for (int i = 0; i < arr.length; i++) {
		System.out.println(arr[i]);
	}
}

}

Getting compilation error in 1st test case and TLE message in 2nd test case please help

Hey @amangaur078
Sort in Linear time .
Optimize your solution