I can get balance of particular account, byt I'm wondering are there any way in web3.js to get first N ethereum accounts sorted by their Ethereum balances?
Not directly. You'd have to write a script that scans each transaction from each block on the chain, collect the list of addresses by looking at the to
for each transaction, filter out contract address from the address collection, then retrieve the balance of the remaining addresses and sort. The script isn't particularly difficult to write, but it will probably take a long time to run.