1.冒泡排序
冒泡排序是从排序序列的第一项开始,比较相邻的元素,如果第一个比第二个元素大,则交换他们两个的位置,直到末尾,此时最大值位于最后一位。针对除末尾的元素意外重复以上操作。
1.1 个人理解什么是冒泡排序
从数组第一个元素开始,以数组相邻的值做比较,如果第一个比第二个元素大的时候交换两个值的位置,直到最后一位。再从第一位开始,重复相同的步骤。
1.2 实现代码
/**
* 冒泡排序
* @param arr 待排序的数组
*/
function bubbleSort(arr) {
let max;
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
max = arr[j];
if (max > arr[j + 1]) {
arr[j] = arr[j + 1];
arr[j + 1] = max;
}
}
}
return arr;
}
console.log(bubbleSort([1,3,4,2,5,8,5,6,4,7,9,14,10]))
2. 插入排序
插入排序是将待排序序列的第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。
2.1 个人理解什么是插入排序
将数组的第一项认为是已经排好的数组,从第二项开始,再依次往前查找比对,如果前一个比现在的大就交换位置,否则停止查找比对。
2.2 实现代码
/**
* 插入排序
* @param arr 带排序的数组
* @return {array}
*/
function insertSort(arr) {
let currentValue;
let preIndex;
for (let i = 1; i < arr.length; i++) {
currentValue = arr[i];
preIndex = i - 1;
while (preIndex >= 0 && currentValue < arr[preIndex]) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = currentValue;
}
return arr;
}
console.log(insertSort([1,3,4,2,5,8,5,6,4,7,9,14,10]))
3. 什么是选择排序
选择排序是将未排序序列中的最大值(最小值)存放至排序序列中的起始位置,再从余下的排序序列中找到最小值放入已经排序序列的末尾。以此类推,直至所有元素排序完毕。
3.1 个人理解什么是选择排序
先从数组中找到最大值(最小值)放在数组的第一位,然后再从第二位开始找最大值(最小值)放在第二位,以此反复直至排序完成。
3.2 实现代码
/**
* 选择排序
* @param arr 带排序的数组
*/
function selectSort(arr) {
let min;
let minIndex;
for (let i = 0; i < arr.length; i++) {
min = arr[i];
minIndex = i;
for (let j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
arr[minIndex] = arr[i];
arr[i] = min;
}
return arr;
}
console.log(selectSort([1,3,4,2,5,8,5,6,4,7,9,14,10]))