2017-03-27 4 views
-1

브라우저가 콘솔에서 충돌하는 이유는 무엇입니까? 브라우저 콘솔의 변수에서이 함수를 실행하면 멈추거나 충돌이 발생하여 탭을 닫을 수 있지만 콘솔이 작동을 멈 춥니 다.자바 스크립트 선택 정렬로 인해 Chrome 브라우저 콘솔이 멈추거나 중단되는 이유가 무엇인가요?

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 
+0

왜 배열 원시 정렬 함수를 사용하지 않습니까? – Kulvar

답변

1

귀하의 코드는 자바 스크립트 호출이 배열에 대한 참조로 호출되어 있음을 유의하십시오이

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)

처럼 일하고, 문제의 몇했다. 따라서 새로운 변수에리스트를 지정하지 마십시오.

1

을 왜 sort() 방법을 사용할 수 있지만 사용자 지정 정렬을해야합니까 :

let arr=[70,30,24,90,4, 400, 0, 24]; 
 
let sorted = arr.sort((a, b) => a > b); 
 

 
console.log(sorted);

브라우저를 중첩 루프와 수표가 있기 때문에 중단됩니다.