大家好,我被困在角js里。 我要做的是显示selectionSort的步骤,我所做的代码是
var myApp = angular.module('myApp',[]);
var arraymain = [];
myApp.controller('myController',function($scope) {
$scope.array2 = [];
$scope.selectionSort = function(list) {
n=list.length;
temp2 = list;
for(i=0; i<n-1; i++) { //need to do n-2 passes
i_min=i;
//finding mining index
for(j=i+1;j<n;j++){//ith position: elements from i till n-1 candidates
if(temp2[j]<temp2[i_min])
i_min=j; //update the index of minimim element
}
temp=temp2[i];
temp2[i]=temp2[i_min];
temp2[i_min]=temp;
alert(temp); //It shows as needed
$scope.array2.push(temp2); //Here i am having problem it saves the sorted final array i.e the last every time of loop but i want to save current array on every outer loop execution
}
return list;
$scope.selectionSort([3,2,3,4,5,1,2]);
console.log($scope.array2[0]);
console.log($scope.array2[1]);
console.log($scope.array2[2]);
});
抱歉我的英语不好。
答案 0 :(得分:0)
目前尚不清楚您需要做什么。我很确定你的主要问题已经超出你的主要问题了,使用Angular只会让情况变得更糟。
如果你的目标是在console.log
外循环的每一步都selectionSort
数组的状态,那么你需要在每个循环的底部运行console.log
。
看起来可疑的第一件事是:
$scope.array2.push(temp2);
如果你按照我的建议在循环的每一步运行console.log(array2)
,你需要这一行:
$scope.array2 = temp2;
这样,你覆盖array2
,它在for
循环的每次迭代中保存数组的状态。然后你记录它。将每个状态附加到一个更大的数组,然后对该数组中的每个项目运行console.log不是最好的方法。
但是,我不确定你的问题是什么。