how to sort the expression not based on the Heads in Times?
with the help of Bob Hanlon:
axx = HoldForm[
NonCommutativeMultiply @@
SortBy[List @@ (a[k, l] b[i, j]), First]] // ReleaseHold
axx //. NonCommutativeMultiply[a_, Y___] :> HoldForm[Times[a, Y]]