插入排序演算法思想:
假設陣列中有n個數,則:
1)先使得陣列0到0範圍上有序(這個範圍上只有乙個數,顯然是有序的);
2)再使得陣列0到1範圍上有序;
3)再使得陣列0到2範圍上有序;
……)以此類推,最終,使得陣列0到n-1範圍上有序,至此,陣列完成排序。
按照插入排序演算法的思想,陣列在0到n-1(n>0)範圍上已經有序時,如何實現陣列在0到n範圍有序:
此時將n位置的數與n-1位置的數作比較,如果n位置的數比n-1位置的數小,則交換這兩個數的位置,然後,將n-1位置的數與n-2位置的數進行比較,如果n-1位置的數比n-2位置的數小,則交換這兩個數的位置,……,以此類推,直至陣列前一位置的數不比當前位置的數小,或者,當前位置已經是0位置,此時,實現陣列在0到n範圍的有序。
插入排序**:
public
class
insertionsort
insertionsort
(arr,
0,arr.length -1)
;}public
void
insertionsort
(int
arr,
int l,
int r)
for(
int i = l +
1;i <= r;i++)}
}public
void
swap
(int
arr,
int i ,
int j)
插入排序時間複雜度:
o(n^2)
插入排序額外空間複雜度:
o(1)
排序演算法3 插入排序
插入排序 insertion sort 通過對未排序的元素逐個插入已排序的合適的位置而完成排序工作,其排序流程如下 1.對陣列的前兩個元素進行排序。2.將第三個元素和前兩個已經排好序的元素進行比較,並且插入到合適的位置。3.和第二步同樣的方法對剩下的所有元素進行排序,最後便可得到按照從大到小的順序排...
排序演算法3 插入排序
該演算法維護乙個有序序列,然後把無序序列中的元素,在有序序列中從後往前進行掃瞄,找到位置後插入。從乙個元素開始,該元素可以認為已經被排序好的。在有序序列從後往前掃瞄的過程中,也要將已排序的元素逐個後移,為新插入的元素提供位置 插入排序 public class insertsort for int ...
排序演算法總結(3) 插入排序
插入排序是區域性有序的,陣列中有乙個元素被作為標記元素,標記元素的左側是有序的,右側是無序的,即標記元素是無序部分的第乙個元素。此時要求被標記元素出列,且和有序部分的第乙個元素進行比較,若標記元素小於有序部分的最大元素,則最大元素右移到標記元素的位置,標記元素和次大元素繼續比較,直到標記元素大於有序...