每一个外层循环的过程可以用一下图来描述:
冒泡排序的时间复杂度为 O(n2) O ( n 2 ) O(n^2),空间复杂度为 O(1) O ( 1 ) O(1),属于 稳定 排序。适用于数据比较少或基本有序的情况。
//冒泡排序
bubbleSort = function(arr){
var len = arr.length;
for (var i = 0; i < len; i++){
for (var j = 0; j < len - i - 1; j++){
if (arr[j] > arr[j + 1])
[arr[j + 1], arr[j]] = [arr[j],arr[j + 1]];
}
}
}
选择排序
选择排序也很简单。它每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。下面是完整的选择排序过程:
选择排序的时间复杂度为 O(n2) O ( n 2 ) O(n^2),空间复杂度为 O(1) O ( 1 ) O(1),属于 稳定 排序。适用于数据比较少的情况,综合各种情况来讲还是这个最慢。
//选择排序
selectionSort = function(arr){
var len = arr.length;
var min, min_index;//min每次找到的最小值,min_index最小值在无序序列的位置
for (var i = 0; i < len - 1; i++){
min = arr[i];
for (var j = i + 1; j < len; j++){//找到最小值
if (arr[j] < min){
min = arr[j];//找到的最小值
min_index = j;//找到的最小值索引
}
}
if (min != arr[i])
[arr[min_index