数组排列
冒泡排序:冒泡排序是一种算法,可以把一系列的数据按照一定的顺序进行排列显示(从小到大或是从大到小)
算法:观察执行过程,从而找到其中的规律,并将其转换成代码。
例如:可以将数组中的 [5,4,3,2,1] 中的元素按照从小到大的顺序排列,输出 1,2,3,4,5
冒泡排序 是一种简单的算法。它重复地走访过要排序的数列,一次比较两个元素。如果他们的顺序错误把他们交换过来。
走访数列的工作是重复地进行到直到没有再需要交换,也就是该算法已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢浮
到数列的顶端。
例如:可以将数组中的 [5,4,3,2,1] 中的元素按照从小到大的顺序排列,输出 [1,2,3,4,5]
第一轮 [4,3,2,1,5]
5和4进行比较,错误,5到4后面;4,5,3,2,1
5和3进行比较,错误,5到3后面;4,3,5,2,1
5和2进行比较,错误,5到2后面;4,3,2,5,1
5和1进行比较,错误,5到1后面;4,3,2,1,5
第二轮 [3,2,1,4,5]
4和3进行比较,错误,4到3后面;3,4,2,1,5
4和2进行比较,错误,4到2后面;3,2,4,1,5
4和1进行比较,错误,4到1后面;3,2,1,4,5
第三轮 [2,1,3,4,5]
3和2进行比较,错误,3到2后面;2,3,1,4,5
3和1进行比较,错误,3到1后面;2,1,3,4,5
第四轮 [1,2,3,4,5]
2和1进行比较,错误,2到1后面;1,2,3,4,5
5 经过一轮一轮交换,慢慢浮到后面去,就像泡泡一样慢慢浮到上面去。
案例分析
实例一:
5 ,4 ,3 ,2 ,1
1、一共需要的趟数,使用外层 for循环
5个数一共要走4趟
总长度 即为数组长度减去 1(arr.length - 1)
2、每一趟交换次数,使用内层 for循环
第1 趟交换 4次
第2 趟交换 3次
第3 趟交换 2次
第4 趟交换 1次
由于次数是由 0次开始的,所以长度为 arr.length - i -1
3、交换两个变量
var arr=[5,4,3,2,1]
for(var i=1;i<arr.length;i++){
// console.log(i)
for(var j=0;j<arr.length-i;j++){
// 前一个和后一个元素相比较,如果前面的元素大于后面的元素就交换两个变量
if(arr[j] > arr[j+1]){
var k=arr[j];
aa[j]=arr[j+1];
arr[j+1]=k;
}
}
}
console.log(arr);
实例二:
乱序排列的数组,降序排列顺序
实现思路:如果前面的数小于后面的数,那么就将后面的数和前面的数,二者的值相互调换
与上面的思路大致相同,只需要将 > 变成 < 即可。
var arr=[4,2,5,1,3];
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length - i;j++){
if(arr[j]<arr[j+1]){
var k = arr[j];
arr[j] = arr[j+1];
arr[j+1] = k;
}
}
}console.log(arr);