/**
* Introduction to Algorithms, Second Edition
* 2.1 InsertSort
* @author 土豆爸爸
*
*/
public class InsertSort {
/**
* 插入排序
*
* @param array
* 待排序数组
* @return 已排序数组
*/
public static void sort(int[] array) {
for (int j = 1; j < array.length; j++) {
int key = array[j];
int i = j - 1;
while (i >= 0 && array[i] > key) {
array[i + 1] = array[i];
i--;
}
array[i + 1] = key;
}
}
}
import junit.framework.TestCase;
public class InsertSortTest extends TestCase {
public void testFixArray() {
int[] array = { 5, 2, 4, 6, 1, 3 };
InsertSort.sort(array);
assertTrue(verifyOrdered(array));
}
public void testRandomArray() {
int size = (int)(Math.random()* 1000);
int[] array = new int[size];
for(int i = 0; i < size; i++) {
array[i] = (int)(Math.random()* 10000);
}
InsertSort.sort(array);
assertTrue(verifyOrdered(array));
}
private boolean verifyOrdered(int[] array) {
for (int i = 1; i < array.length; i++) {
if (array[i - 1] > array[i]) {
return false;
}
}
return true;
}
}
算法导论示例-InsertSort
最新推荐文章于 2021-03-11 20:41:36 发布
本文介绍了一种简单直观的排序算法——插入排序,并提供了详细的Java实现代码。通过两个测试案例验证了算法的有效性:一个是固定数组的排序,另一个是随机生成数组的排序。此外,还提供了一个用于验证排序正确性的辅助方法。
2878

被折叠的 条评论
为什么被折叠?



