I have a strange problem with my alghoritm, which works if the array size is less than 114468 and does not work if it is larger than 114468. Browse using google chrome. I canβt understand why = \ Here is the code:
Generate an array:
var arr = []; var res = []; for (var i = 114467; i > 0; i--) { arr.push([i - 1, i]); }
Find the first element in the array to sort:
for (var i = 0, j = arr.length; i < j && res.length == 0; i++) { var found = false; for (var m = 0; m < j; m++) { if (i == m || arr[i][0] == arr[m][1] || arr[i][1] == arr[m][0]) { found = true; break; } if (!found) { res.push(arr[m]); arr.splice(m, 1); } } }
Sorting:
do { for (var i = 0, j = arr.length; i < j; i++) { var resLength = res.length - 1; if (arr[i][1] == res[resLength][0] || arr[i][0] == res[resLength][1]) { res.push(arr[i]); arr.splice(i, 1); break; } } } while (arr.length > 0);
When sorting steps, it stops working.
All code:
var t = function () { var arr = []; var res = []; for (var i = 114467; i > 0; i--) { arr.push([i - 1, i]); } var startsec = new Date().getSeconds(); var startmilsec = new Date().getMilliseconds(); document.write(startsec + '.' + startmilsec + '<br>'); for (var i = 0, j = arr.length; i < j && res.length == 0; i++) { var found = false; for (var m = 0; m < j; m++) { if (i == m || arr[i][0] == arr[m][1] || arr[i][1] == arr[m][0]) { found = true; break; } if (!found) { res.push(arr[m]); arr.splice(m, 1); } } } do { for (var i = 0, j = arr.length; i < j; i++) { var resLength = res.length - 1; if (arr[i][1] == res[resLength][0] || arr[i][0] == res[resLength][1]) { res.push(arr[i]); arr.splice(i, 1); break; } } } while (arr.length > 0); var stopsec = new Date().getSeconds(); var stopmilsec = new Date().getMilliseconds(); document.write(stopsec + '.' + stopmilsec + '<br>'); var executionTime = (stopsec - startsec).toString() + "s" + (stopmilsec - startmilsec).toString() + "'ms"; document.write(executionTime + '<br>'); } ();
Can I get a memory limit?
FSou1
source share