利用插入排序對鍊錶進行排序

2021-10-02 19:47:58 字數 839 閱讀 4354

/**

* definition for singly-linked list.

* public class listnode

* }*///直接插入排序:後面的元素一直與前面的元素比較,小則前移

public class solution else

//r指向無序列中第乙個元素

listnode r = q.next;

while (r != null) else if(r.val <= p.val) else

listnode s = r;

r = r.next;

q.next = r;

s.next = t.next;

t.next = s;}}

return p;}}

}

①、基本思想:在要排序的一組數中,假定前n-1個數已經排好序,現在將第n個數插到前面的有序數列中,使得這n個數也是排好順序的。如此反覆迴圈,直到全部排好順序。

②、演算法描述:

從第乙個元素開始,該元素可以認為已經被排序;

取出下乙個元素,在已經排序的元素序列中從後向前掃瞄;

如果該元素(已排序)大於新元素,將該元素移到下一位置;

重複步驟3,直到找到已排序的元素小於或者等於新元素的位置;

將新元素插入到該位置後;

重複步驟2~5。

public static int insertionsort(int array) 

array[preindex + 1] = current;

}return array;

}

利用插入排序對鍊錶進行排序

下圖是對 4 15 9 1插入排序的舉例 當if p.val p.next.val 當不滿足條件時 q p.next p.next q.next 這時候,需要把q節點放到p節點之前的合適位置,即 while r.next.val q.val 當條件滿足時 r後移,當不滿足時表示,找到比q節點大的數,...

對鍊錶進行插入排序

1.問題描述 對鍊錶進行插入排序。插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序 用黑色表示 每次迭代時,從輸入資料中移除乙個元素 用紅色表示 並原地將其插入到已排好序的鍊錶中。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次...

對鍊錶進行插入排序

對鍊錶進行插入排序。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。重複直到所有輸入資料插入完為止。示例 1 輸入 4 2 1 3 輸出 1 2 3 4 示例 ...