文章参考:图解冒泡排序及优化
dart冒泡排序
void main(){
var list = [23,16,19,44,7,10,12,9,88];
for(var i = 0; i< list.length;i++){
//是否已经有序的标记,默认有序
bool isSort = true;
for(var j=0;j<list.length-i-1;j++){
//升序排序>,降序排序<
if(list[j]>list[j+1]){
int temp = list[j];
list[j]=list[j+1];
list[j+1]= temp;
//发生元素交换,序列仍是无序状态
isSort = false;
}
if(isSort){
break;
}
}
}
for(var i in list){
print(i);
}
print("==================");
list.forEach((i)=>print(i));
}
冒泡排序:每次就是将相邻的两个数进行比较,然后交换位置,每一轮(最外层for执行一遍)之后都能够将最大(最小)的数字冒泡到了最右边
在经过第一轮交换后,最大的数 9 冒泡到了最右边
到此为止,所有元素都是有序的了,这就是冒泡排序的整体思路。
冒泡排序是一种稳定排序,值相等的元素并不会打乱原本的顺序。由于该排序算法的每一轮都要遍历所有元素,总共遍历(元素数量-1)轮,所以平均时间复杂度是O(n2)。