冒泡排序

一向没写过和想过排序算法,本日搜了一下道理,本身尝试了一下。
若有毛病,请指出,请原谅
冒泡排序
网上给出的道理是经由过程比较两个相邻的值,假如左侧比右侧大,则把摆布位置替代

var arr = [2, 6, 5, 4, 12, 8, 25, 34, 22, 45, 41, 89, 67]
for (var i = 0; i < arr.length; i++) {
        if (arr[i] > arr[i+1]) {
            var right = arr [i]
            arr[i] = arr[i+1]
            arr[i+1] = right
        }   
}
轮回完成以后结果是[2, 5, 4, 6, 8, 12, 25, 22, 34, 41, 45, 67, 89],发明有些数字分列不对,还需要再次轮回,在每一个i进入轮回时,应当嵌套一个轮回,遍历数组,举行大小比对。

革新后的代码
for (var i = 0; i < arr.length-1; i++) {
    for (var s = 0; s < arr.length - i - 1; s++) {
        if (arr[s] > arr[s+1]) {
            var right = arr [s]
            arr[s] = arr[s+1]
            arr[s+1] = right
    }
}
因为第一次轮回完成以后,最大的数字是排在末了的,所以末了一个轮回能够不需要。
console.log(arr) // [2, 4, 5, 6, 8, 12, 22, 25, 34, 41, 45, 67, 89]
    原文作者:semonzheng
    原文地址: https://segmentfault.com/a/1190000009971685
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞