数组--冒泡排序

复制代码
复制代码
相邻两个元素进行比较,将一个数组中的数字使用循环进行升序或降序的排列

var arr = [3,2,1]; // ---> [1,2,3]

// 相邻的元素比较,就是下标i的元素跟下标i+1的元素比较 - 所以循环要比正常的遍历少一次
for(var i=0;i<arr.length-1;i++){
// 如果前面的元素比后面的元素大
if(arr[i]>arr[i+1]){
// 则交换位置
var tmp = arr[i]
arr[i] = arr[i+1]
arr[i+1] = tmp
}
}
// 这个循环结束后,arr变为:[2,1,3]
// 所以需要继续排列
for(var i=0;i<arr.length-1;i++){
// 如果前面的元素比后面的元素大
if(arr[i]>arr[i+1]){
// 则交换位置
var tmp = arr[i]
arr[i] = arr[i+1]
arr[i+1] = tmp
}
}
// 这个循环结束后,arr变为:[1,2,3]
// 两个循环代码是重复的,所以用循环处理。3个元素循环两次,4个元素循环3次,所以循环重复的次数也是数组长度-1
for(var j=0;j<arr.length-1;j++){
for(var i=0;i<arr.length;i++){
if(arr[i]>arr[i+1]){
var tmp = arr[i]
arr[i] = arr[i+1]
arr[i+1] = tmp
}
}
}
// 如果要降序排序,就将判断条件中的>改为<即可
复制代码

 

复制代码

 

posted @   减淡  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示