冒泡排序
冒泡排序
-
概念:针对数字类型数组的入门排序算法,其他排序算法,比如选择排序,插入排序,快速排序等等
-
主要原理:整个冒泡排序过程分为多次排序,每次排序会将未排序的数据通过两个相邻的数据进行对比,将值大的放在后面。可以将实现本次未被排序中最大值放在未排序数据的最后
-
流程:
- 每次排序过程是将未排序的数据的最大值排在未排序数据的最后
- 单次排序过程是从数组的开头第一个数据开始进行对比,依次进行相邻的两个数进行对比,就是将最大的数进行交换,放在后面和下个数据进行对比。一直对比未排序的数据的末尾,将最大的数据排在未排序的数据最后
-
具体流程:
var arr = [54,12,23,45,11] var i ;代表排序的次数 第1次排序,将54放在数组的最后 i = 1 arr.length-i 4 1.54和12进行对比,54>12,两者交换位置------[12,54,23,45,11] 2.54和23进行对比,54>23 两者交换位置------[12,23,54,45,11] 2.54和45进行对比,54>45 两者交换位置------[12,23,45,54,11] 3.54和11进行对比,54>11 两者交换位置------[12,23,45,11,54] 结束 第2次排序,将45放在数组的最后 i = 2 arr.length-i 3 1.12和23进行对比, 12<23 两者不交换位置------[12,23,45,11,54] 2.23和45进行对比, 23<45 两者不交换位置------[12,23,45,11,54] 3.45和11进行对比 45>11 两者交换位置------[12,23,11,45,54] 结束 第3次排序,将23放在数组的最后 i = 3 arr.length-i 2 1.12和23进行对比, 12<23 两者不交换位置------[12,23,11,45,54] 2.23和45进行对比, 23>11 两者不交换位置------[12,11,23,45,54] 结束 第`length-1`次排序,将12放在数组的最后 i = 4 arr.length-i arr.leng-(arr.length-1)=1 1.12和11进行对比,12>11,两者交换位置------[11,12,23,45,54] 结束
-
实例
var arr = [54,12,45,52,11]; //外层for:代表第几次排序 for( var i = 0;i <= arr.length-1;i++){ // console.log(i); //每次排序的过程 //内层for循环:在第i次排序过程中,对比第几次,对比次数。 //第一次对比,下标为0 for(var j = 0;j <arr.length-i-1 ;j++ ){ if( arr[j] > arr[j+1]){ //交换位置 var temp = arr[j+1] ; arr[j+1] = arr[j] arr[j] = temp } } }console.log(arr);