1. 程式人生 > >[one_demo_16]直接插入排序的demo

[one_demo_16]直接插入排序的demo

直接插入排序的基本思想是迴圈一個數組,將當前下標插入到下標之前已排好序的陣列部分,迴圈結束,插入結束,則陣列排序完畢。

java實現

        /**
	 * 測試插入排序
	 */
	@Test
	public void testInsertSort() {
		int[] array = { 1, 33, 23, 5, 21, 14, 64, 125, 3 };
		inserSort(array);
		System.out.print("排序結束後:");
		printArray(array);
	}

	/**
	 * 插入排序法
	 */
	public void inserSort(int[] array) {
		// 健壯性判斷
		if (array.length < 2) {
			return;
		}
		// 迴圈陣列
		for (int i = 0; i < array.length; i++) {
			int temp = array[i];
			int j = i;
			// 遍歷當前下標前的陣列部分,如果當前下標值小於當前下標前的陣列值,則陣列值後移
			while (j > 0 && temp < array[j - 1]) {
				array[j] = array[j - 1];
				j--;
			}
			// 遍歷結束後,將元素插入結束下標的位置
			array[j] = temp;
			// 列印陣列,觀察排序過程
			System.out.print("第" + i + "次排序後:");
			printArray(array);
			System.out.println();
		}

	}

	/**
	 * 列印陣列
	 */
	public void printArray(int[] array) {
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i] + "\t");
		}
	}