冒泡排序:
规则:前后两个数两两进行比较,如果符合交换条件两个数交换位置
规律:冒泡排序的每一轮排序,都可以找出一个较大的数放在正确的位置。
比较轮数=数组长度-1
每一轮比较的次数=数组长度-当前的轮数
654 3 2 1
第一轮:比较五次 6要跟5个数比较,也就是比较五次
564 3 2 1
546 3 2 1
543 6 2 1
543 2 6 1
543 2 1 6
第二轮:比较四次
453 2 1
435 2 1
432 5 1
432 1 5
第三轮:比较三次
342 1
324 1
321 4
第四轮:比较两次
231
213
第五轮:比较一次
12
var arr=[6,5,4,3,2,1]
for(var j=0;j<arr.length-1;j++){
for(var i=0;i<arr.length-j-1;i++){
if(arr[i]>arr[i+1]){
swap=arr[i+1];
arr[i+1]=arr[i];
arr[i]=swap
}
}
}
时间复杂度:O(n^2)
选择排序:打擂台法
规则:选出一个位置,这个位置上的元素,和后面所有数字进行比较,如果比较出大小就交换两个数位置
规律:每一轮都能选出一个最小的数,放在正确的位置
比较轮数:数组长度-1
每轮比较次数:数组长度-当前轮数
从小到大
var arr=[6,5,4,3,2,1]
function selection_sort(arr){
var swap=null
for(var i=0;i<arr.length-1;i++){
var min=i
for(var j=i+1;j<arr.length;j++){
if(arr[j]<arr[min]){
min=j
}
}
swap=arr[min]
arr[min]=arr[i];
arr[i]=swap;
}
}
selection_sort(arr)
console.log(arr)