冒泡排序和选择排序

104 阅读1分钟

冒泡排序

## 算法描述: 1.比较相邻的元素:如果第一个比第二个元素大,那么就交换他们两个; 2.从第一对相邻的元素开始比较直到最后一对,这样在最后的元素是最大的一个; 3.针对所有元素(==除了最后一个==)重复以上步骤;

例子展示:

        for (var k = 0; k < arr.length - 1; k++) {          /*根据数组的元素个数来决定循环次数,
                                                            因为最后一个不用再次循环所以减一*/
            for (var i = 0; i < arr.length - 1 - k; i++) {  /*根据k值来决定内层循环次数,
                                                            因为最大值会往后走故后面不用再遍历*/
                if (arr[i] > arr[i + 1]) {
                    var temp = arr[i]
                    arr[i] = arr[i + 1]
                    arr[i + 1] = temp
                }
            }
        }

选择排序

## 算法描述: 1.在待排序的一组数据中,选出最小(最大)的一个数与第一个位置的数交换; 2.然后在剩下的数中,再找出最小(最大)的数与第二个位置的交换位置; 3.然后再依此类推直到n-1个元素与第n个元素交换位置,选择排序结束。

例子展示:

  for (var k = 0; k < arr.length; k++) {
            var minIndex = k    // 假设当前最小数值 为 下标 0 的项
            for (var i = k + 1; i < arr.length; i++) {
                if (arr[minIndex] > arr[i]) {
                    minIndex = i
                }
            }
            // 交换 真实最小的值  与 下标 0 的值
            var temp = arr[k]
            arr[k] = arr[minIndex]
            arr[minIndex] = temp
        }