javascript数组选择排序和冒泡排序详解
数组的遍历
数组的索引是按照0~n的顺序排序,所以可以通过通过for循环来实现数组的遍历,这个行为就叫做数组的遍历
var arr = [1,2,3,4,5,6]
for(var i = 0;i<arr.length;i++){ //arr.length是获取数组的长度
document.write(arr[ i ]);
}
输出结果为 :1 2 3 4 5 6
数组的排序
数组的排序就是将一个无须的数组,通过处理,变成一个有序的数组
主要介绍2种排序的方法:冒泡排序和选择排序
冒泡排序
原理:
-
通过循环遍历数组,让相邻的两个值进行比较,如果前一个比后一个大,那么就把两个换个位置
-
数组遍历一遍以后,那么最后一个数字就是最大的那个了
-
然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置
-
以此类推,最后就会按照顺序把数组排好了
var arr=[3,1,2,8,5,4,9,0]
for(var j=0;j<arr.length-1;j++){
//arr.length-1的原因:假设这个数组长度为6;后面的5个数已经比价排放好了,
//那么最前面的一个数就没有必要再进行比较了
for(var i = 0 ; i<arr.length-1-j; i++){
//arr.length-1的原因跟上面的是一个道理的;
//-j是因为外部循环执行了j次之后,内部的遍历就应当减少j次;
//也就是一个长度为5的数组,外部循环执行第二次的时候,也就是j==1时;
//数组所需要比较的长度为4
if(arr[i]>arr[i+1]){
var tmp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = tmp;
}
}
}
alert(arr)
//输出的结果为0,1,2,3,4,5,8,9
选择排序
它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完
var arr=[3,1,2,8,5,4,9,0]
for(var j = 0;j<arr.length-1;j++){
var min = j
for(var i =j+1;i<arr.length-1;i++){
if(arr[i]<arr[min]){
min = i
}
}
var tmp = arr[min];
arr[min] = arr[j];
arr[j] = tmp
}
alert(arr)
//输出的结果为0,1,2,3,4,5,8,9
原理:
-
先假定数组中的第 0 个就是最小的数字的索引
-
即 var min = 0 ;arr[mim];
-
然后遍历数组,只要有一个数字比我小,那么就替换之前记录的索引
-
for(var i = 0; i < arr.length ;i++){
if(arr[i]<arr[min]){
min = i // i为这个数组最小值得索引 也就可以得出 arr[min] 在此次遍历中,为最小值
}
} -
知道数组遍历结束后,就能找到最小的那个索引,然后让最小的索引换到第 0 个的位置
-1通过上一步,得出arr[min]为最小值
-2声明变量来存储arr[min] , var tmp = arr[min];
-3 把arr[0]赋值给arr[min] ,即 arr[min] = arr[0];此时在min索引上的值为 arr[0]
-4把tmp的值赋值给 arr[0]; 即arr[0] = tmp;此时的arr[0]所存储的值即为最小值 -
通过外部嵌套循环来进行多次的遍历;
for(var j = 0;j<arr.length-1;j++){- 再来第 j 趟遍历,假定第 1 个是最小的数字的索引
- var min = j
}
-
在遍历一次数组,找到比我小的那个数字的索引
-
遍历结束后换个位置
-
依次类推,也可以把数组排序好
本文地址:https://blog.csdn.net/WALTER_CHM/article/details/107284819
上一篇: Mac下node多版本管理
下一篇: HTML实例原型设计