1.基本思想
每一步將乙個待排序的記錄,插入到前面已經排好序的有序序列中去,直到插完所有元素為止。
3.**實現
public class insertionsorting ;
for(int i = 1; i < arr.length; i++)
} //遍歷輸出排序好的陣列元素
for(int i : arr)
} private static void swap(int arr, int j, int i)
}
4.總結
簡單插入排序在最好情況下,需要比較n-1次,無需交換元素,時間複雜度為o(n);在最壞情況下,時間複雜度依然為o(n*n)。但是在陣列元素隨機排列的情況下,插入排序要優於氣泡排序和選擇排序。所以,雖然三個排序(冒泡、選擇、插入)的時間複雜度都是o(n*n),但是插入排序是效率最高的。
1.原理
對相鄰的元素進行兩兩比較,如果順序相反則進行交換,這樣,每一輪排序會有乙個最大或最小的元素浮到頂端,最終達到完全有序。
3.**實現
/**
* @author daniel
* 氣泡排序進行陣列元素排序
* 每次比較相鄰的兩個元素,經過每一輪排序,就會有乙個大的數排在最後(每次都比較出最大的乙個數)
*/public class bubblesortdemo ;//靜態初始化乙個陣列
//氣泡排序
for(int i = 0; i < arr.length-1; i ++) }}
for (int i : arr) }}
4.總結
氣泡排序中,n個元素要進行n-1輪排序,第i次排序要比較n-i次。時間複雜度為o(n*n)
1.原理
每一趟從待排序的資料元素中選擇最小(或最大)的乙個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。
2.**實現
public class selectionsort ;
for(int i = 0;i < arr.length - 1; i++)
}//判斷當前最小元素的下標是否改變,若改變,交換值
if(minindex != i)
} //遍歷輸出排序後的陣列元素
for(int i : arr)
}}
3.總結
選擇排序和氣泡排序一樣,n個元素需要n-1輪排序,在最好情況下也就是陣列完全有序的時候,無需任何交換移動,在最差情況下,也就是陣列倒序的時候,交換次數為n-1次。綜合下來,時間複雜度為o(n2)。
參考資料:
簡單排序 氣泡排序,插入排序,選擇排序
簡單排序 氣泡排序,插入排序,選擇排序 這些演算法思想是比較簡單的,執行速度也相對慢一些,不過,在某些情況下比那些複雜演算法實際上還要好一些,比如,對於小規模的檔案以及基本有序的檔案,插入演算法能比快速排序演算法更為有效。如何排序 1 比較兩個資料項 2 交換兩個資料想,或者複製其中的一項 氣泡排序...
簡單排序 氣泡排序 簡單選擇排序 插入排序)
氣泡排序 氣泡排序,掃瞄len次,每次用下標0掃瞄到len 1 i,比較相鄰的兩個元素並交換 param num param len void bubblesort int num,int len cout b 簡單選擇排序 簡單選擇排序 掃瞄len次,每次從下標i掃瞄到len 1,每次掃瞄找到乙個...
簡單排序二 氣泡排序 選擇排序 插入排序練習
package com.wei public class arraytool 函式功能 顯示陣列的元素 返回值 空 引數 array整形陣列 public static void showarray final int array system.out.println 函式功能 尋找陣列的最小值下標...