课程是:
在本练习中,我们将查看Selection的示例代码 分类。但是,在我们排序时,我们也会计算数量 交换发生,然后一旦阵列打印出来 排序
在selectionSort方法的末尾添加一个print语句 打印出排序期间发生的掉期数量。
您不应该修改run()方法。
提示:项目比较在哪里?尝试写出中的步骤 在纸上帮助算法。
我的代码:
import java.util.Arrays;
public class SelectionSort extends ConsoleProgram
{
private static int count;
public void run()
{
int[] array1 = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int[] array2 = {5, 6, 4, 8, 9, 7, 3, 1, 2};
System.out.print("First array: ");
System.out.println(Arrays.toString(array1));
System.out.print("Second array: ");
System.out.println(Arrays.toString(array2));
System.out.println();
// sort first array
selectionSort(array1);
// sort second array
selectionSort(array2);
System.out.print("First array sorted: ");
System.out.println(Arrays.toString(array1));
System.out.print("Second array sorted: ");
System.out.println(Arrays.toString(array2));
}
/*
* Selection sort takes in an array of integers and
* returns a sorted array of the same integers.
*/
public static int[] selectionSort(int[] arr)
{
int currentMinIndex;
for (int i = 0; i < arr.length - 1; i++)
{
currentMinIndex = i;
for (int j = i + 1; j < arr.length; j++)
{
if(arr[j] < arr[currentMinIndex])
{
currentMinIndex = j;
}
}
// swap numbers if needed
if (i != currentMinIndex)
{
int temp = arr[currentMinIndex];
arr[currentMinIndex] = arr[i];
arr[i] = temp;
count++;
}
}
// Print out the number of swaps that took place here
// before returning arr
System.out.println(count);
return arr;
}
}
问题是,我需要 int count 在每个selectionSort后设置为零而不是继续添加,我找不到办法。
答案 0 :(得分:0)
在每次迭代结束时将count设置为0.
System.out.println(count);
count = 0;
return arr;