回 帖 发 新 帖 刷新版面

主题:请教下改进版的冒泡排序要实现判断原本有序的数列就停止排序的问题

为了标志是否需要继续比较,声明一个布尔量flag,在进行每趟比较前将flag置true。如果在比较中发生了数据交换,则将flag置为false,在一趟比较结束后,再判断flag,如果它仍为true(表明在该趟比较中未发生一次数据交换)则结束排序,否则进行下一趟比较。

这个思路下,如何判断比较中是否发生了数据交换呢?

另我感觉没发生数据交换不能==》该数列有序
例如1 3 2  由小到大排
这个数列第一趟也不会发生数据交换,1还是最小的,如果这就停止,排序不就失败了吗

回复列表 (共1个回复)

沙发

第一趟2和3會交換啊。。。
沒有交換就代表序列是單調的(遞增或是遞減)。

我来回复

您尚未登录,请登录后再回复。点此登录或注册