直接插入排序 java與js版

2021-07-14 05:48:34 字數 1469 閱讀 8063

插入排序簡單來說,就是重新去遍歷一組資料,然後在遍歷的時候,拿正在遍歷的資料和已經遍歷過的資料去對比,最後按照某種特定的順序去排序;

舉個簡單的例子,大家都玩過鬥地主吧,我們把桌子上的牌看成是乙個雜亂無序的陣列;在我們鬥地主的時候,我們會拿剛起的牌和手中的牌進行比較,然後把它插入到指定的位置。這就是我們的插入排序;

輸入:n個數的乙個序列n

>。

輸出:輸出的結果要滿足排序後的結果;

public static void main(string args) ;

insertsort1(a, a.length);

} public static void insertsort1(int a, int num) {

for (int i = 1; i < num; i++) {

int temp=a[i]; //複製為哨兵進行對比

int j=i-1;

while(j>=0&&temp

下面再貼上一副自己畫的圖, 可能不是很正確,但是幫助了自己的理解

演算法適用於少量資料的排序,

時間複雜度為o(n^2)。是穩定的排序方法。插入演算法把要排序的

陣列分成兩部分:第一部分包含了這個陣列的所有元素,但將最後乙個元素除外(讓陣列多乙個空間才有插入的位置),而第二部分就只包含這乙個元素(即待插入元素)。在第一部分排序完成後,再將這個最後元素插入到已排好序的第一部分中。

插入排序的基本思想是:每步將乙個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。

直接插入排序是一種簡單的插入排序法,其基本思想是:把待排序的紀錄按其關鍵碼值的大小逐個插入到乙個已經排好序的有序序列中,直到所有的紀錄插入完為止,得到乙個新的有序序列

例如,已知待排序的一組資料是:90, 34, 5, 7, 71, 2

這裡我們把90作為乙個哨兵,然後插入34的時候,到while迴圈裡面去找到34的插入位置;再進行插入。假設在排序過程中前三個已按關鍵碼值遞增的次序重新排序,構成乙個有序序列:

5,34,90

將待排序的第四個記錄7插入上述序列中。首先找到7的插入位置。我們可以將7放入到陣列的第乙個單元r[0]中。然後從90右起對比查詢,7小於90,將90右移,這時再講7與r[0]進行對比,7>=r[0],它插入的位置就是r[1].

直接插入排序的演算法思路:

(1) 設定監視哨r[0],將待插入紀錄的值賦值給r[0];

(2) 設定開始查詢的位置j;

(3) 在陣列中進行搜尋,搜尋中將第j個紀錄後移,直至r[0].key≥r[j].key為止;

(4) 將r[0]插入r[j+1]的位置上。

直接插入排序(js版)

直接插入排序 從小到大 1 function insertsort arr 9 arr j 1 temp 10 11 12 13var arr 5,3,4,6,2 14insertsort arr 15 console.log arr 2,3,4,5,6 temp變數起到哨兵的作用。i從1開始,即假...

Java 直接插入排序

直接插入排序就是直接將乙個數插入到有序的 序列中,對於陣列n,可你看作是兩個序列,第乙個序列是陣列的第乙個元素,第二個序列是原陣列,將第二個序列依次插入到第乙個序列中,下面實現 方法 sort方法是將乙個元素讓入到有序數列中,insertsort方法是對整個陣列的操作 public class in...

Java 直接插入排序

直接插入排序是一種最簡單的排序演算法,在後續我會繼續發布其他的簡單排序 直接插入的演算法基本思想是 僅有乙個元素的序列總是有序的,因此,對n個記錄的序列,可從第二個元素開始直接到第n個元素,逐個向有序序列中執行插入操作,從而得到n個元素按關鍵字有序的序列。一般來說,在含有j 1個元素的有序序列中插入...