演算法3 插入排序演算法

2021-10-22 21:05:22 字數 937 閱讀 1458

插入排序演算法思想:

假設陣列中有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) 插入排序

插入排序是區域性有序的,陣列中有乙個元素被作為標記元素,標記元素的左側是有序的,右側是無序的,即標記元素是無序部分的第乙個元素。此時要求被標記元素出列,且和有序部分的第乙個元素進行比較,若標記元素小於有序部分的最大元素,則最大元素右移到標記元素的位置,標記元素和次大元素繼續比較,直到標記元素大於有序...