还记得(篇一)二分查找不,它只用于有序元素列表。这篇先学习第一种排序算法:选择排序。
首先先介绍两种最基本的数据结构:数组和链表,它们无处不在。
数组:数组中的元素存储地址在内存中是相连紧靠一起的
链表:链表中的元素可存储在内存中的任何位置,每个元素都存储着下一个元素的地址,从而一系列随机的内存地址就串在一起了
数组 | 链表 | |
读取 | O(1) | O(n) |
插入 | O(n) | O(1) |
删除 | O(n) | O(1) |
O(n) = 线性时间 、O(1) = 常量时间
//选择排序
//O(n*n)
function selectionSort(b) {
if (!(b instanceof Array)) return "arr is not Array!";
for (var c = [], a = 0; a < b.length;) {
var e = b[0],
d = 0;
for (a = 0; a < b.length; a++) b[a] < e && (e = b[a], d = a);
c.push(b.splice(d, 1).join())
}
return c
};