• 什么是冒泡排序算法和选择排序算法
  • 发布于 2个月前
  • 885 热度
    0 评论
  • 心已凉
  • 8 粉丝 51 篇博客
  •   
一、冒泡排序(Bubble Sort)
因为越小的元素会经由交换 慢慢 “浮” 到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。这种如同水底的气泡逐步冒出水面一样,故称为冒泡法 或 起泡法。
1.1 算法描述:
比较相邻的元素 : 如果第一个元素比第二个元素大,那么就交换他们两个。从第一对相邻的元素 开始比较 直到 最后一对,这样在最后的元素应该会是最大的数。针对所有的元素(除了最后一个)重复以上的步骤。重复步骤 a~c ,直到没有任何一对数字需要比较。

1.2 代码实现
// 堆代码 www.duidaima.com
var arr = [12, 25, 8, 16, 14];
console.log("排序前数组,", arr)
//冒泡排序:数组,前一项和后一项比较,前一项大,前一项和后一项交换位置。反之不变。依次往下比。直到最大的数跑到最右边,然后进行第二轮比较。
//封装冒泡排序的函数 
function bubbleSort2(arr) {
    for (var i = 0; i < arr.length; i++) {//第一层寻交换控制比较多少轮
        for (var j = 0; j < arr.length - 1 - i; j++) {//第二层循环用于每一轮的比较
            if (arr[j] > arr[j + 1]) {
                var temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
        console.log("每一轮比较后结果", arr)
    }
    return arr;
}
console.log("排序后数组,", bubbleSort2(arr))
输出结果:

二、选择排序(Selection Sort)
选择排序:第一轮,找出数组中最小的数,将第一项和最小的数互换位置。第二轮找到除第一项最小的数,和第二项互换位置,依次类推
2.1 算法描述:
在待排序的一组数据中,选出最小(最大)的一个数与第一个位置的数交换。在剩下的数中,再找最小(最大)的数与第二个位置的数交换位置。依次类推直到第 n-1 个元素与第 n 个元素交换位置,选择排序结束。
2.2 代码实现
var arr = [12,25,8,16,14];
console.log("排序前数组,",arr)
//选择排序:第一轮,找出数组中最小的数,将第一项和最小的数互换位置。第二轮找到除第一项最小的数,和第二项互换位置,依次类推
//封装选择排序的函数
function selectSort(arr){
    for (var i = 0; i < arr.length-1; i++) {
        for (var j = i+1; j < arr.length; j++) {
            if(arr[i] > arr[j]){
                var temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

console.log("排序后数组,",selectSort(arr))

输出效果:

用户评论