/** * 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 发布