我需要以任何方式优化此脚本,可能您可以找到更好的算法进行此排序。这个脚本得到的点像“奥斯陆 - 东京,莫斯科 - 柏林,罗马 - Barselona,Barselona - 奥斯陆,东京 - 莫斯科,柏林 - 纽约”并对其进行排序。你可以在这个页面http://at-no.ru/sorting.html看到它 - 首先是部门的地方,第二个是到达地点,第三个和四个没关系。第一个按钮是“添加卡”,第二个按钮是“排序卡”。你可以用英语填写。旅行无法在起点完成 - 在这种情况下,剧本将循环并冻结。
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
}
}