给定一个索引5
和一个数组大小10
,这个数组被返回:[5, 4, 6, 3, 7, 2, 8, 1, 9, 0]
代码:
function middleOutIterator(index, arraySize) {
var distances = [];
for (var i = 0; i < arraySize; i++) {
distances[i] = [ i, Math.abs(index - i) ];
}
distances.sort(sort);
for (var i = 0; i < distances.length; i++) {
distances[i] = distances[i][0];
}
return distances;
}
function sort(a, b) {
return a[1] > b[1];
}
基本上,您传入一个起始索引,它会朝任一方向向外迭代。
这不是一个真正的迭代器,它只是创建一个索引数组,所以我给它起的名字有点用词不当,但是你会怎么称呼这种迭代/排序呢?
我不打算优化这个功能,因为它不在关键领域,当然也不是瓶颈,但我有兴趣阅读更多关于它和任何相关算法的信息。