自学内容网 自学内容网

冒泡VS选择

十大排序之冒泡排序、选择排序

冒泡:每次遍历数组时,元素间两两相比较,按照升序或降序要求将符合要求的元素后移,每次遍历后当前遍历次数就是排好序的尾元素个数,所以一共要遍历素组长度减一次(第一个元素无需单独遍历一遍)

function bubbleSort(arr){
if(!arr.length) return arr
for(let i = 0 ;i< arr.length ; i++){
// -i 是因为之前的i次循环已经排好了末尾的i个元素,-1是判断索引
for(let j = 0 ; j < arr.length - i -1; j++){
if(arr[j] > arr[j+1]){
let tem = arr[j]
arr[j] = arr[j+1]
arr[j+1] = tem
}
}
}
return arr
}

选择:可以理解为冒泡的一种优化,每次遍历找到确定的那个剩下元素中最大或者最小的元素,将其按序从数组的第一个位置开始放置,知道整个数组排序完成

// 以升序排序为例
function choiceSort(arr){
if(!arr.length) return arr
for(let i = 0 ; i< arr.length ; i++){
let index = i  // 标记最小元素的索引位置
// 找到剩下元素中的最小元素索引位置
for(let j = i+1 ; j< arr.length ; j++){
if(arr[j] < arr[index]){
index = j
}
}
let tem = arr[i]
arr[i] = arr[j]
arr[j] = tem
}
return arr
}

原文地址:https://blog.csdn.net/yingzi0001/article/details/143807951

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!