javascript 选择排序导致 chrome 浏览器控制台挂起或崩溃,为什么?
javascript selection sort causing chrome browser console to hang or crash why?
为什么控制台在我的浏览器中崩溃,如果我 运行 这个函数在浏览器控制台的一个变量中,它挂起或崩溃,我可以关闭选项卡但控制台只是停止工作。
let arr=[70,30,24,90,4];
function selectionSort(list){
let minIndex=0;
let minVal=0;
for(let i=0; list.length; i++){
minIndex=i;
minVal=list[i];
for(let j=i; j<list.length; j++){
if(list[i]< minVal){
minVal=list[i];
minIndex=j;
}
}
if(minVal<list[i]){
temp=list[i];
list[i]=list[minIndex];
list[minIndex]=temp;
}
}
return list;
}
let ar= selectionSort(arr);// causes console in chrome to stop working
无限循环。
你需要
for(let i=0; i < list.length; i++){
否则 list.length 总是正确的。
另请记住,您正在重新发明轮子:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
虽然可以使用 sort()
方法,但为什么需要自定义排序:
let arr=[70,30,24,90,4, 400, 0, 24];
let sorted = arr.sort((a, b) => a > b );
console.log(sorted);
您的浏览器因嵌套循环和您正在进行的检查而挂起。
你的代码有几个问题,它是这样工作的
let arr = [70, 30, 24, 90, 4, 23];
function selectionSort(list) {
let minIndex = 0;
let minVal = 0;
for (let i = 0; i < list.length; i++) { // add "i < " to prevent infinite loop
minIndex = i;
minVal = list[i];
for (let j = i+1; j < list.length; j++) { // add "+1" (saves you a nano second)
if (list[j] < minVal) { // change to j (otherwise the sorting won't work)
minVal = list[j];
minIndex = j;
}
}
if (minVal < list[i]) {
let temp = list[i];
list[i] = list[minIndex];
list[minIndex] = temp;
}
}
}
selectionSort(arr)
console.log(arr)
请记住,JavaScript 是对数组的引用调用。所以不要将列表分配给新变量。
为什么控制台在我的浏览器中崩溃,如果我 运行 这个函数在浏览器控制台的一个变量中,它挂起或崩溃,我可以关闭选项卡但控制台只是停止工作。
let arr=[70,30,24,90,4];
function selectionSort(list){
let minIndex=0;
let minVal=0;
for(let i=0; list.length; i++){
minIndex=i;
minVal=list[i];
for(let j=i; j<list.length; j++){
if(list[i]< minVal){
minVal=list[i];
minIndex=j;
}
}
if(minVal<list[i]){
temp=list[i];
list[i]=list[minIndex];
list[minIndex]=temp;
}
}
return list;
}
let ar= selectionSort(arr);// causes console in chrome to stop working
无限循环。
你需要
for(let i=0; i < list.length; i++){
否则 list.length 总是正确的。
另请记住,您正在重新发明轮子: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
虽然可以使用 sort()
方法,但为什么需要自定义排序:
let arr=[70,30,24,90,4, 400, 0, 24];
let sorted = arr.sort((a, b) => a > b );
console.log(sorted);
您的浏览器因嵌套循环和您正在进行的检查而挂起。
你的代码有几个问题,它是这样工作的
let arr = [70, 30, 24, 90, 4, 23];
function selectionSort(list) {
let minIndex = 0;
let minVal = 0;
for (let i = 0; i < list.length; i++) { // add "i < " to prevent infinite loop
minIndex = i;
minVal = list[i];
for (let j = i+1; j < list.length; j++) { // add "+1" (saves you a nano second)
if (list[j] < minVal) { // change to j (otherwise the sorting won't work)
minVal = list[j];
minIndex = j;
}
}
if (minVal < list[i]) {
let temp = list[i];
list[i] = list[minIndex];
list[minIndex] = temp;
}
}
}
selectionSort(arr)
console.log(arr)
请记住,JavaScript 是对数组的引用调用。所以不要将列表分配给新变量。