记录前端开发学习与积累

选择排序

#步骤拆解:

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
  • 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾(每趟遍历起始位置向后偏移一位)。以此类推,直到所有元素均排序完毕。
  • 使用与数据规模较小的数组。

简单实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function selectionSort(arr) {
var length = arr.length;
var minindex, temp;
console.time('选择排序耗时');
for (var i = 0; i < length; i++) {
minindex = i;
for (var j = i + 1; j < length; j++) {//从未排序的子数组中找到最小数值的角标
if (arr[j] < arr[minindex]) {
minindex = j;
}
}
temp= arr[minindex];//将最小数与
arr[minindex] = arr[i];
arr[i] = temp;
}
console.timeEnd('选择排序耗时');
return arr;
}

#小结:
归并排序时间复杂度为O(nlogn),空间复杂度为O(n),不稳定

图解:

myBlog
归并排序

  1. 1. 简单实现:
  2. 2. 图解: