这个算法的复杂度是个常数,对于任意规模的输入算法所需的执行时间不变
在处理大规模问题上有奇效
冒泡排序
这个地方特别注意循环退出的条件是
sorted=!sorted这个表达式
这个表达式的逻辑值也就等价于!sorted
所以这个地方其实就是判断sorted是不是真
sorted是true的话 !sorted是false循环退出
sorted是false的话 !sorted是true循环继续
每次进入循环的时候都有一个赋值是sorted=!sorted
前提是进入循环了 所以sorted已经是真true
如果到了后面发现还有元素没有交换完成
sorted置为false 回去后继续循环
至于那个bool sorted应该指的是在这个循环里直接申请了变量sorted
而不是每次进一次外循环就赋值申请一次变量
这个也就类似于
bool sorted = false;
for (; sorted = !sorted; n--) {
// balabala
}
两者区别只是sorted的生命周期不同 你在for里申请它就之作用于for内
在main函数内申请就是作用在main函数内
网友评论