冒泡排序和选择排序
冒泡排序和选择排序
作用和原理
将数组中的数值,按照执行的顺序,从小到大排序或者从大到小排序,本文中均为从小到大排序。
冒泡排序
原理: 相邻的两个单位,比较存储的数据,如果第一个单元的数据较大,就将两个相邻单元,交换存储数据
核心: 交换存储的数据
两个相邻的单元,比较数据大小,第一个单元数值较大,就交换两个单元存储的数据
var num=[5,6,7,1,8,9,3,4,2];
//这是用的最基础的for循环嵌套的语法写的,主要是排序的思路
//第一个for循环一次循环确定一个最大的数
for(var n=0;n<=num.length-1-1;n++){
//里面的for循环是依次将两个相邻的数进行比较,直到比到前面已经比过的n个数为止(因为后面已经比过的数都已经确定是比前面的数大了,所以不用再比了,这样可以提升程序的执行效率)
for(var m=0;m<=num.length-1-1-n;m++){
//if语句将两个相邻的数从小到大排好
if(num[m]>num[m+1]){
var x=0;
x=num[m];
num[m]=num[m+1];
num[m+1]=x;
}
}
}
document.write(num);
选择排序
核心 : 找到最小值的索引,与起始位置交换数值,先找索引 在交换数值
代码:
//选择排序跟冒泡排序的程序相近,但有本质的区别。选择排序是先找到最小数的索引然后与起始值交换数值,而冒泡排序是两个两个依次比较将最大数(或者最小数)沉底
var num=[5,6,7,1,8,9,3,4,2];
for(var n=0;n<=num.length-1-1;n++){
var min=n;
for(var m=n+1;m<=num.length-1;m++){
//这里min是最小数的索引而不是最小数,这点要注意!!!
if(num[min]>num[m]){
min=m;
}
}
if(min!=n){
var x=0;
x=num[min];
num[min]=num[n];
num[n]=x;
}
}
document.write(num);