do..while循环在气泡排序中进行链表的排序

问题描述

我正在尝试理解此代码,但是我不理解与此MyObject a = new MyObject("abc","abide"); MyObject b = new MyObject("cab","whatever you want"); ArrayList<MyObject> list = new ArrayList<>(); list.add(a); list.add(b); trier(list); 相关的do..while循环。终止while循环的条件是什么?

while(swapped)

解决方法

在迭代中没有交换任何元素时,循环将停止。正如您在循环开始时所看到的,swapped设置为0。无法交换元素时,程序进入条件if (ptr1->data > ptr1->next->data),在这种情况下,swapped设置为1(是true的C版本。只要swapped为1,循环就会继续。

,

您要基于该代码以升序对链接列表进行排序。

您从头开始浏览列表,如果当前节点的值大于下一个节点的值,则交换它们。

您要执行此操作,直到执行交换,这就是while (swapped)的意思。