用 java语言以测试驱动开发实现计数排序
时间: 2024-05-12 11:16:35 浏览: 8
以下是用Java语言实现计数排序的代码,采用测试驱动开发(TDD)的方式编写:
```
import static org.junit.Assert.assertArrayEquals;
import org.junit.Test;
public class CountingSortTest {
@Test
public void testCountingSort() {
int[] arr = {5, 2, 9, 5, 2, 3};
CountingSort countingSort = new CountingSort();
int[] result = countingSort.countingSort(arr, 9);
assertArrayEquals(new int[] {2, 2, 3, 5, 5, 9}, result);
}
}
class CountingSort {
public int[] countingSort(int[] arr, int max) {
int[] count = new int[max + 1];
int[] output = new int[arr.length];
// 计算每个元素的出现次数
for (int i = 0; i < arr.length; i++) {
count[arr[i]]++;
}
// 计算小于等于每个元素的元素个数
for (int i = 1; i <= max; i++) {
count[i] += count[i - 1];
}
// 将元素放入输出数组中
for (int i = arr.length - 1; i >= 0; i--) {
output[count[arr[i]] - 1] = arr[i];
count[arr[i]]--;
}
return output;
}
}
```
在这里,我们首先编写了一个测试用例,测试计数排序是否能够正确地对数组进行排序。然后,我们编写了实际的计数排序算法,使其能够通过测试用例。这种方法可以确保我们的代码正确,同时也可以提高代码的可维护性和可读性。