代码之家  ›  专栏  ›  技术社区  ›  Muhammad Hamza

你所有的断言都通过了吗?这就是错误所在

  •  0
  • Muhammad Hamza  · 技术社区  · 9 年前

    t know what

    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]);
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   marvel308    9 年前

    您的代码中有一个bug,请尝试运行

        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);
    smallest = indexOfMinimum(array, 0);
    

    应该是的

    smallest = indexOfMinimum(array, j);