插入排序(Java)

簡介

將一個記錄插入到已排好序的序列中,從而得到一個新的有序序列(將序列的第一個數據看成是一個有序的子序列,然後從第二個記錄逐個向該有序的子序列進行有序的插入,直至整個序列有序)

代碼

package nono.sort;

import java.util.Arrays;

/**
 * 插入排序
 * 
 * @author Nonoas
 *
 */
public class InsertSorter {

	public static void insertSort(int[] arr) {

		for (int i = 1; i < arr.length; i++) // 從第二個數開始向前比較
			for (int j = i - 1; j >= 0; j--)
				if (arr[j] < arr[i]) {	//找到第一個比它小的,插入其後面
					insert(arr, i, j + 1);
					break;
				} else if (j == 0)	//如果沒有找到比它小的,則插到最前面
					insert(arr, i, 0);
	}

	public static void insert(int[] arr, int from, int to) {
		int tmp = arr[from];
		for (int i = from; i > to; i--)
			arr[i] = arr[i - 1];
		arr[to] = tmp;
	}

	public static void main(String[] args) {
		int[] a = { 38, 65, 76, 17, 13 };
		insertSort(a);
		System.out.println(Arrays.toString(a));
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章