我需要以任何方式优化这个脚本,也许你可以找到更好的排序算法。该脚本获得“奥斯陆 - 东京、莫斯科 - 柏林、罗马 - 巴塞罗纳、巴塞罗纳 - 奥斯陆、东京 - 莫斯科、柏林 - 纽约”等点并对其进行排序。您可以在此页面中看到它http://at-no.ru/sorting.html - 第一个是部门的地方,第二个是到达的地方,第三和四个无关紧要。第一个按钮是“添加卡”,第二个是“排序卡”。你可以用英文填写。travel 无法在起点完成 - 在这种情况下,脚本将循环并冻结。
function sortCards(arr) { // card's sorting
var map = {}; // create map
for (var i=0; i<arr.length; i++) {
map[arr[i].from] = arr[i]; // fill map for each card
}
for (var from in map) {
map[from].next = map[map[from].to]; // create linked list
}
for (var from in map) {
for (var next = map[from]; next; next = next.next) {
delete map[next.to]; // find start point
}
var start = from; // put from to var start
}
var arr = [];
for (var point = map[start]; point; point = point.next) {
arr.push(point); // fill array
}
for (var i=0; i<arr.length; i++) {
var result = document.createElement("div");
document.getElementById('entered').appendChild(result).innerHTML='<center>' + 'Get ' + arr[i].transport
+ ' from ' + arr[i].from + ' to ' + arr[i].to + '. Place ' + arr[i].seat + '<br>' + '</center>'; // display the result
}
}