I have an array of structs for products that I am trying to sort by name, type, price, and quantity. Name and type work, but price and quantity aren't working. My code is:
else if (sort == sortByPrice)
{
for (int i = 0; i < numProducts; i++)
{
int smallPosition = i;
for (int x = i + 1; x < numProducts; x++)
{
if (list[i].price > list[x].price)
{
smallPosition = x;
}
}
temp = list[i];
list[i] = list[smallPosition];
list[smallPosition] = temp;
}
}
else if (sort == sortByQty)
{
for (int i = 0; i < numProducts; i++)
{
int smallPosition = i;
for (int x = i + 1; x < numProducts; x++)
{
if (list[i].qty > list[x].qty)
{
smallPosition = x;
}
}
temp = list[i];
list[i] = list[smallPosition];
list[smallPosition] = temp;
}
}
Can anyone tell me why it doesn't work/how to fix it?
if (list[i].price > list[x].price)should beif (list[x].price < list[smallPosition].price). That should be enough. Otherwise, if you're not interested in your Selection Sort implementation, the answer below is a Bubble Sort implementation and should work.