冒泡排序

冒泡排序双层循环

举例:
3 6 5 7 1

第一趟排序:

第一次比较:3和6比较,3小于6,不交换位置: 3 6 5 7 1

第二次比较:6和5比较,6大于5,交换位置:3 5 6 7 1

第三次比较:6和7比较,6小于7,不交换位置: 3 5 6 7 1

第四次比较:7和1比较,7大于1,交换位置:3 5 6 1 7

第一趟总共进行了4次比较, 排序结果:3 5 6 1 7

第二趟排序:

第一次比较:3和5比较,3小于5,不交换位置:3 5 6 1 7

第二次比较:5和6比较,5小于6,不交换位置:3 5 6 1 7

第三次比较:6和1比较,6大于1,交换位置:3 5 1 6 7

第二趟总共进行了3次比较, 排序结果:3 5 1 6 7

第三趟排序:

第一次比较:3和5比较,3小于5,不交换位置:3 5 1 6 7

第二次比较:5和1比较,5大于1,交换位置:3 1 5 6 7

第三趟总共进行了2次比较, 排序结果:3 1 5 6 7

第四趟排序:

第一次比较:3和1比较,3大于1,交换位置:1 3 5 6 7

第四趟总共进行了1次比较, 排序结果:1 3 5 6 7

最终结果:1 3 5 6 7

N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,实现如下

var arr = [3 ,6 , 5 , 7 ,1];
for (var i = 0; i < arr.length - 1; i++) {
    for (var j = 0; j < arr.length - i - 1; j++) {
        if (arr[j] > arr[j + 1]) {
            var temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}
console.log(JSON.stringify(arr));

打印结果:

  [10,20,30,40,50]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容