/**
* 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 示例 ...