冒泡排序
通过不断比较数组中相邻两个元素的值,较小或较大的元素前移
算法图解:
代码示例:
<script>
var arr = [10, 7, 5, 27, 98, 31]; // 待排序数组
for (var i = 1; i < arr.length; i++) { // 控制需要比较的轮数
for (var j = 0; j < arr.length - i; j++) { // 控制参与比较的元素
if (arr[j] > arr[j + 1]) { // 比较相邻的两个元素
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr); // 输出结果:5,7,10,27,31,98
</script>
插入排序
通过构建有序数组元素的存储,对未排序的数组元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应位置并插入。
算法图解:
代码示例:
<script>
//插入排序
var arr=[10,2,23,45,3];
for(var i=1;i<arr.length;i++){ // 比较循环次数为数组长度-1
// 从右向左遍历有序数列,有序数列的起点是第 0 位,终点是无序数列前一位
for(var j=i;j>0;j--){
// 如果右边无序列表中的元素小于有序列表中的元素,则换位
if(arr[j-1]>arr[j]){
var newNum=arr[j-1];
arr[j-1]=arr[j];
arr[j]=newNum;
}
}
}
console.log(arr); // [2,3,10,23,45]
</script>