冒泡算法 (bubbleSort)
//思路 J+1项比J项小 我们就调换他们位置
//因为只调换一遍是不够的 所有我们遍历length-1遍
function bubbleSort(arr){
for(var i = 0;i<arr.length-1;i++){
for(var j = 0;j < arr.length-1; j++){
if (arr[j+1]<arr[j]) {
temp = arr[j+1]
arr[j+1] = arr[j]
arr[j] = temp
}
}
}
console.log(arr)
}
var num = [1,2,35,7,21,5,67,453,15,87,561]
bubbleSort(num) //[1, 2, 5, 7, 15, 21, 35, 67, 87, 453, 561]
- 如果数组本来就是有序的我们就不用再做多余遍历,来影响体现效果了
- 以下优化
function bubbleSort(arr){
var clock = false
for(var i = 0;i<arr.length-1;i++){
for(var j = 0;j < arr.length-1; j++){
if (arr[j+1]<arr[j]) {
temp = arr[j+1]
arr[j+1] = arr[j]
arr[j] = temp
clock = true // 如果有遍历我们就true
}
}
//如果有遍历,我们就让clock变回false 证明有遍历 需要继续
if (clock) {
clock = false
}else{ //没有 直接跳出循环
break;
}
}
console.log(arr)
}
var num1 = [1,2,3,4,5]
var num = [1,2,35,7,21,5,67,453,15,87,561]
bubbleSort(num)
bubbleSort(num1)
选择排序(selection Sort)
//思路 每次遍历都和第I个数比较 比他小的就和他调换位置
function selectionSort(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1; j<arr.length; j++){
if (arr[j]<arr[i]) {
temp = arr[j]
arr[j] = arr[i]
arr[i] = temp
}
}
}
console.log(arr)
}
var arr = [8,9,10,2,6,8,7,1,3,56,10,12,15]
selectionSort(arr)
网友评论