input: Write a function to sort an array without using O(nlogn) complexity sorting algorithms.
  assert order_without_nlogn([3, 5, 2, 1, 4]) == [1, 2, 3, 4, 5]
  assert order_without_nlogn([10, 7, 8, 9, 1, 5]) == [1, 5, 7, 8, 9, 10]
  assert order_without_nlogn([5, 3, 8, 4, 2]) == [2, 3, 4, 5, 8]
output: def order_without_nlogn(arr):
      # Implementation of Counting Sort
      if not arr:
          return arr
      
      # Find the maximum value in the array
      max_val = max(arr)
      
      # Initialize the count array
      count = [0] * (max_val + 1)
      
      # Count the occurrences of each element
      for num in arr:
          count[num] += 1
      
      # Reconstruct the sorted array
      sorted_arr = []
      for i, cnt in enumerate(count):
          sorted_arr.extend([i] * cnt)
      
      return sorted_arr