1、冒泡排序
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。如果两个元素相等,是不会再交换的。
数组中有 N 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置。
第一轮就可以选出一个最大的数放在最后面;
第二轮选出前N-1个数中最大的数放在N-1位置上;
第三轮...
那么经过 n-1
(数组的 length - 1) 轮,就完成了所有数的排序。
这样就理解为什么外层for循环里 i<length-1,因为循环n-1次;
内层for循环是第i次循环的时候,数组后面已经固定了i个数值,不需要再和其比较,故length-1-i;
冒泡排序总的平均时间复杂度为O(n^2);
javascript版代码如下:
1 var bubbleSort = function(arr){ 2 3 for(var i = 0;i<arr.length-1;i++){ 4 for(var j = 0;j<arr.length-1-i;j++){ 5 if(arr[j]>arr[j+1]){ 6 var k = arr[j]; 7 arr[j] = arr[j+1]; 8 arr[j+1] = k; 9 } 10 } 11 } 12 console.log(arr); 13 14 } 15 bubbleSort([2,5,6,3,4,6,64,34,69]);
原文地址:https://www.cnblogs.com/kongVv/p/11260369.html
时间: 2024-10-18 15:12:41