Вы можете понять, почему это работает, если вы записываете arr для каждого цикла "i".
var arr=[3,5,4,7,8,9,30,0,-1];
function bubble_Sort(arr){
var len = arr.length,
i, j, stop;
for (i=0; i < len; i++){
for (j=0; j<len-i; j++){
if (arr[j] > arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
console.log(arr)
}
return arr;
}
console.log(bubble_Sort(arr));
(9) [3, 4, 5, 7, 8, 9, 0, -1, 30]
(9) [3, 4, 5, 7, 8, 0, -1, 9, 30]
(9) [3, 4, 5, 7, 0, -1, 8, 9, 30]
(9) [3, 4, 5, 0, -1, 7, 8, 9, 30]
(9) [3, 4, 0, -1, 5, 7, 8, 9, 30]
(9) [3, 0, -1, 4, 5, 7, 8, 9, 30]
(9) [0, -1, 3, 4, 5, 7, 8, 9, 30]
(9) [-1, 0, 3, 4, 5, 7, 8, 9, 30]
(9) [-1, 0, 3, 4, 5, 7, 8, 9, 30]
(9) [-1, 0, 3, 4, 5, 7, 8, 9, 30]
каждый цикл i перемещает большое число на нижнее, поэтому последнее число i стабильно.