Banana having an ID of 6 is correct — this is working as it was intended. All auto-increment does is allow you to insert new rows into the table without knowing the previous ID. Basically allows you to insert data without worrying about overwriting the ID, and you can be lazy.
The way auto increment works is that it has a counter that goes up for every row inserted. When you delete rows the counter doesn't change.
I think what you are expecting is that the database would automatically move down rows to fill in the missing IDs. While this might be true in a linked list data structure, it is not in this case.
The only way you can fill in those gaps is to either manually do it, or write a script that would either fill the gaps or rearrange the table or ids. There is really no need for this though, because when you retrieve the rows for markup use, you can use an ordered list or a trivial loop to handle this, and the gaps would simply be irrelevant.