Вы реализуете только одну итерацию сортировки Bubble.Вам нужно повторять до тех пор, пока не будет прогона, который не может упорядочить ....
Обратите внимание, что у вас тоже есть ошибки ... Первый элемент не зависит от вашего алгоритма.поэтому, если я получу 2->1
, я получу 2->1
вместо 1->2
.Точно так же элемент на temp1
также не затрагивается.
Так что, если я запустлю 4->3->2->1
t1= 4 ,t2 = 3, t2->next = 2
, то поменяю местами t1= 4 ,t2 = 2, t2->next = 3
t1= 2 ,t2 = 3, t2->next = 1
затемswap t1= 2 ,t2 = 1, t2->next = 3
И результат будет
4->2->1->3
EDIT
Условие простое.Добавьте переменную changeOccured
как
int changeOccured = 1;
while( changeOccured){
changeOccured = 0;
// one run of bubble
if (temp2->price > temp2->next->price){
//add this when the if succeed
changeOccured = 1;
}
}