七大排序算法之插入排序

前言

插入排序也是比較常用的

原理

對於給定的一個數組,初始時,假設第一個元素自成一個有序序列,其餘元素爲無序序列,接着從第二個元素開始,按照元素的大小,依次將當前處理的元素插入到之前的有序序列中,直到最後一個元素插入到有序序列中爲止。

時間複雜度

平均情況:n*n

最壞情況:n*n

最好情況:n

代碼

public class InsertSort {

	//插入排序
	//對於給定的一個數組,初始時假設第一個記錄自成一個有序序列,其餘記錄爲無序序列。接着從第二個記錄開始,
	//按照記錄的大小依次將當前處理的記錄插入到其之前的有序序列中,直至最後一個記錄插入到有序序列中爲止。

	//時間複雜度 n*n  最好情況 n  平均情況n*n
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr={6,3,8,2,9,1};
		System.out.println("排序前數組爲:");
		for(int num:arr){
			System.out.print(num+" ");
		}
		System.out.println();
		int tmp;
		for (int i = 1; i < arr.length; i++) {
			// 待插入數據
			tmp = arr[i];
			int j;
			for (j = i - 1; j >= 0; j--) {
				// 判斷是否大於tmp,大於則後移一位
				if (arr[j] > tmp) {
					arr[j + 1] = arr[j];
				} else {
					break;
				}
			}
			arr[j + 1] = tmp;
			//System.out.println(i + ":" + Arrays.toString(arr));
			System.out.println("第"+i+"趟排序後");
			for(int num:arr){
				System.out.print(num+" ");
			}
			System.out.println();
		}
		System.out.println();
		System.out.println("排序後的數組爲:");
		for(int num:arr){
			System.out.print(num+" ");
		}
	}

}

下一篇:快速排序

入口在此:點我學習快速排序

發佈了37 篇原創文章 · 獲贊 86 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章