冒泡排序:
实现原理
如果数组中有n个数,依次比较相邻的两个数,如果前者大于后者,就把两个数交换位置,小的数在前面,如果两个数进行比较,后者小于前者,两个数就不会交换位置。这样第一次冒泡排序就好了,而后面会依次进行排序,直到大的数在最后,前面的数是最小的。经过n-1(数组的length-1)轮后,就完成了所有数的排序。
图片演示:
代码演示:
//定义数组[9,4,3,2,1]
var arr=[9,4,3,2,1];
//遍历数组,次数就是数组的长度
for(var i=1;i<arr.length;i++){
for(var j=0;j<arr.length-1;j++){
//利用if来判断大于,小于或等于,来判断是否进行位置交换
if(arr[j]>arr[j+1] ){
//定义一个新的空的值
var temp=arr[j];
//对前后的两个数进行交换
arr[j]=arr[j+1];
//将数字依次放入新的空的值里
arr[j+1]=temp;
}
}
}
//控制台输出
console.log(arr);
//输出结果:1,2,3,4,9
总结:
1、外层for循环控制循环次数
2、内层for循环进行两束交换,找出最大的数
3、if的作用进行前后两数的大小判断是否进行下一步操作
4、定义temp用于交换前后两数
插入排序
说明:
插入排序是冒泡排序的优化,是一种更加直观和简单的排序算法。
实现原理:
通过构建有序的数组存储,对末排序的数组元素,在已排序的数组中从最后一个元素向第一个元素遍历,找到相应的位置并插入。
图片演示:
代码演示:
var arr=[10,8,100,31,,87,99,82,1];
//先遍历无序数组的下标
for(var i=1;i<arr.length;i++){
//遍历并比较一个无序数组元素和所有有序数组元素
for(var j=1;j>0;j--){
if(arr[j-1]>arr[j]){
var temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}
}
}
//输出结果[1,8,10,31,82,87,99,100]
console.log(arr);
代码描述
1、外层循环的作用:遍历无序数组的下标。
2、内层循环的作用:遍历并比较一个无序数组元素和所有有序数组元素。
3、if的作用:进行前后两值的大小判断来进行下一步操作。
4、内部定义的temp作用:用来交换前后两数