冒泡排序
一、冒泡排序简介:
之所以叫冒泡排序是因为使用这种排序算法时,数据值会像气泡一样从数组的一端漂浮到另一端。假设正在将一组数字按照升序排列,较大的值会浮动到数组的右侧,而较小的值则会浮动到数组的左侧。之所以会产生这种现象是因为算法会多次在数组中移动,比较相邻的数据,当左侧值大于右侧值时,将他们进行互换。
1 var aArray = [9,7,5,6,4,3,3,5,9] 2 //冒泡排序 3 function bubbleSort(arr) { 4 //循环一: 根据数组的长度来确定要比较的次数 5 for (var outer = 0; outer <= arr.length - 2; outer++) { 6 //循环二: 前一个元素与后一个元素进行比较 7 for (var inner = 0; inner <=arr.length - 1 - outer; inner++) { 8 if (arr[inner] > arr[inner+1]) { 9 swap(arr,inner,inner+1); 10 } 11 } 12 } 13 return arr; 14 } 15 console.log(bubbleSort(aArray)); //[3,3,4,5,5,6,7,9,9]
解释:第二个循环的作用是元素之间进行比较,代码中每次一循环完毕之后最大的数都会在数组的最末的位值依次排放,相应的,最小的数没有一定移动到数组最前面,只是位置相应的前移了。
第一个循环则是决定第二个循环的次数,毕竟,第二个循环每结束一次,最大的数就会出现在最末尾(按次序排列好),像是10个元素出现9次最大值就可以完成排序了。