用 java语言以测试驱动开发实现选择排序
时间: 2023-12-31 14:45:19 浏览: 61
java实现选择排序算法
以下是用 Java 语言实现选择排序的代码。我们将使用测试驱动开发(TDD)来开发这个算法,因此我们首先编写一个测试案例,然后逐步实现代码以使其通过测试。
测试案例:
```java
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
public class SelectionSortTest {
@Test
public void testSelectionSort() {
int[] arr = {5, 2, 9, 1, 5, 6};
int[] expectedArr = {1, 2, 5, 5, 6, 9};
SelectionSort.selectionSort(arr);
assertArrayEquals(expectedArr, arr);
}
}
```
代码实现:
```java
public class SelectionSort {
public static void selectionSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
}
```
在这个算法中,我们使用两个嵌套的循环来依次找到数组中最小的元素,并将其交换到正确的位置。外部循环从数组的第一个元素开始,直到倒数第二个元素结束。内部循环从外部循环的下一个元素开始,直到数组的最后一个元素。在内部循环中,我们比较当前元素和当前最小元素,并根据需要更新最小元素的索引。在外部循环的结尾,我们将找到的最小元素与当前元素交换位置(如果它们不同)。
我们的测试案例使用了 `assertArrayEquals()` 函数来比较数组的内容。这个函数会比较两个数组的长度和内容,并在它们不相同时抛出异常。如果我们的排序算法能够成功地将数组排序,测试案例将不会抛出异常,说明测试通过。
阅读全文