javascript - 做,你所有的断言都通过了吗?这是错误

标签 javascript arrays algorithm selection-sort

交换位置和最小索引处的值。使用 swap 和 indexOfMinimum 函数编写选择排序。这就是问题所在,我不知道我的逻辑有什么问题,也不知道为什么我的代码没有正确运行断言语句。

var swap = function(array, firstIndex, secondIndex) {
    var temp = array[firstIndex];
    array[firstIndex] = array[secondIndex];
    array[secondIndex] = temp;
};

var indexOfMinimum = function(array, startIndex) {

    var minValue = array[startIndex];
    var minIndex = startIndex;

    for(var i = minIndex + 1; i < array.length; i++) {
        if(array[i] < minValue) {
            minIndex = i;
            minValue = array[i];
        }
    } 
    return minIndex;
}; 

var selectionSort = function(array) {
    var j;
    var smallest;
    for(j = 0; j < array.length; j++)
    {
        smallest = indexOfMinimum(array, 0);
        swap(array , j , smallest); 
    }
};

var array = [22, 11, 99, 88, 9, 7, 42];
selectionSort(array);
println("Array after sorting:  " + array);

Program.assertEqual(array, [7, 9, 11, 22, 42, 88, 99]);

最佳答案

你的代码有问题,试试运行

    var swap = function(array, firstIndex, secondIndex) {
    	var temp = array[firstIndex];
    	array[firstIndex] = array[secondIndex];
    	array[secondIndex] = temp;
    };
    
    var indexOfMinimum = function(array, startIndex) {
    
    	var minValue = array[startIndex];
    	var minIndex = startIndex;
    
    	for(var i = minIndex + 1; i < array.length; i++) {
        	if(array[i] < minValue) {
            	minIndex = i;
            	minValue = array[i];
        	}
    	} 
    	return minIndex;
    }; 
    
    var selectionSort = function(array) {
    	var j;
    	var smallest;
    	for(j = 0; j < array.length; j++)
    	{
    		smallest = indexOfMinimum(array, j);
    		swap(array , j , smallest); 
    	}
    };
    
    var array = [22, 11, 99, 88, 9, 7, 42];
    selectionSort(array);
    console.log("Array after sorting:  " + array);
在 selectionSort()

smallest = indexOfMinimum(array, 0);

应该是

smallest = indexOfMinimum(array, j);

关于javascript - 做,你所有的断言都通过了吗?这是错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45651865/

相关文章:

javascript - 如何在特定索引处的 div 内的文本子字符串周围添加 div 或 span?

javascript - 响应式设计 : switching order of Div's

java - 我无法从数组输出中删除空值

javascript - 在 Javascript 中初始化嵌套关联数组

algorithm - 大溪流水库采样

javascript - 限制div中元素的数量

javascript - 在为系统编写 Web 后端时,代码在没有 Javascript 的情况下仍然可以工作是否重要?

ruby - 如何 "split and group"基于对象的一个​​属性的数组

algorithm - 查找具有子区间的区间的最小覆盖范围

python - 找到具有属性的许多节点之一的最短路径