Challenge problem

The compiler is showing tle.

Can anyone tell me why?

import java.util.*;

public class Main {

static Scanner scn = new Scanner(System.in);
public static void main(String args[]) {
    int[] arr;
	arr = take_input();
	counting_sort(arr);
}
public static int[] take_input() {
	int n = scn.nextInt();
	int[] arr = new int[n];
	for (int i = 0; i < arr.length; i++) {
		arr[i] = scn.nextInt();
	}
	return arr;
}

public static void counting_sort(int[] arr) {
	int n = max_array(arr);
	int[] count = new int[n + 1];
	Arrays.fill(count, 0);
	int m = arr.length;
	int[] output = new int[m];
	int i, j, k, counter = 0;
	 for ( int t : arr) {
	        count[t] += 1;
	    }
	for (i = 1; i < count.length; i++) {
		count[i] = count[i] + count[i - 1];
	}
	for (i = arr.length - 1; i >= 0; i--) {
		output[count[arr[i]] - 1] = arr[i];
		count[arr[i]] = count[arr[i]] - 1;
	}
	for (i = 0; i < output.length; i++) {
		System.out.print(output[i] + " ");
	}
}

public static int max_array(int[] array) {
	int max = array[0], i, j;
	for (i = 0; i < array.length; i++) {
		for (j = i + 1; j < array.length; j++) {
			if (array[j] > max) {
				max = array[j];
			}
		}
	}
	return max;
}

}

@VinayakSingh11111 hi buddy lemme check!

@VinayakSingh11111 bro why are you using nested loops just to find max, when you can find it linearly. Here I check your corrected code and close the doubt by marking it resolved and rate full!

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

public static void counting_sort(int[] arr) {
	int n = max_array(arr);
	int[] count = new int[n + 1];
	Arrays.fill(count, 0);
	int m = arr.length;
	int[] output = new int[m];
	int i, j, k, counter = 0;
	 for ( int t : arr) {
	        count[t] += 1;
	    }
	for (i = 1; i < count.length; i++) {
		count[i] = count[i] + count[i - 1];
	}
	for (i = arr.length - 1; i >= 0; i--) {
		output[count[arr[i]] - 1] = arr[i];
		count[arr[i]] = count[arr[i]] - 1;
	}
	for (i = 0; i < output.length; i++) {
		System.out.print(output[i] + " ");
	}
}

public static int max_array(int[] array) {
	int max = array[0], i, j;
	for (i = 0; i < array.length; i++) {
		max = Math.max(max, array[i]);
	}
	return max;
}

}

@VinayakSingh11111 bro why are you opening the doubts again and again, I have already corrected your code. close this doubt by marking it resolved.