You keep using the words "the mem pool" as if there is only one mem pool.
That is not how bitcoin works.
There are thousands of full node peers on the network. Each node has its own mem pool. There is no guarantee that any two nodes have the same transactions in there mem pool.
Generally, if a node already has a transaction in its mem pool, it will not accept a new competing transaction. However, there is nothing preventing someone from writing and running their own node that will replace a transaction in the mem pool with a newer transaction, or from writing and running their own node that will keep multiple competing transactions in their mem pool. They can't force any of their connected peers to do the same though.
Miners get to choose from their own mem pool which VALID transactions they include in the blocks they create. If they include two competing transactions in a block, then their block is invalid and will not be accepted by any other nodes or miners. As such, they will waste their time, money, and effort creating a useless block that pays them nothing. This would be a pretty stupid waste of money, so miners that actually want to accomplish anything will not intentionally create invalid blocks.
Getting back to your original example:
So let's say my wallet has 5 BTC. First I send a payment of 1 BTC to receiver A. It is verified by a full node and put into the mem pool.
That full node relays that transaction to all the peers that he is connected to. They also verify if, put it into their own mem pool, and relay it to all the peers they are connected to. Those peers also verify if, put it into their own mem pool, and relay it to all the peers they are connected to, and so on. Very quickly all nodes on the network are aware of the transaction.
Immediately after that, I send all 5 BTC to B. It is then verified by a different full node and also put into the mem pool.
If that different full node already heard about the first transaction, then they will generally not accept the new transaction. If they have not yet heard about the first transaction, then they will validate it, accept it into their own mem pool, and relay it to all their connected peers.
Because I put more transaction fees on the second transaction, the second transaction will mostly likely picked up by a miner faster than the 1st transaction and get 1st confirmation.
That depends on how many miners and mining pools heard about the first transaction, and how much hashpower they have. Generally, once a miner (or pool) has heard about the first transaction, they will not accept the second transaction. Since the first transaction had a head start in being relayed across the network, it has a much better chance of reaching more hashpower and therefore a much better chance of being confirmed into a solved block.
Thus I did my double spending.
Which part of my logic is wrong?
That depends on what you mean by double spending.
You created two incompatible transactions.
Only one of them will end up in the blockchain. Anyone that doesn't have a trust relationship established with you, and doesn't want to risk the value of the transfer will (or at least should) wait for at least one confirmation. Therefore, you will be identified for your fraud and will not accomplish anything with it.
There is no guarantee that your second transaction will ever get relayed by anyone since the first one will relay so quickly. Even if it does relay to a few nodes, there is a very good chance that the intended recipient won't ever see it.
Furthermore a merchant could create a well connected node that monitors for competing transactions. He would see both transactions and would immediately know that he must wait for one of them to confirm to know which one will be valid and which will disappear.