选择排序和插入排序
选择排序
选择排序:选择排序的思路是从一组元素中逐次选择最大的元素,放在无序元素末端,具体的实现过程如下图所示。因此选择排序需要存在以下几个接口:
1.selectMax(p,n):从节点p开始,在节点p前n个节点中(不包括节点p)选择一个节点返回。
<pre>
public static ListNode selectMax(ListNode p, int n) {
ListNode max = p;
while(0 < n--) {
if(p.data <= p.nexNode.data) {
p = p.nexNode;
max = p;
}
}
return max;
}
</pre>
2.insertBefore(tail,max):在尾部节点tail前插入max节点
<pre>
public static ListNode insertBefore(ListNode tail, ListNode max) {
tail.preNode.nexNode = max;
max.nexNode = tail;
max.preNode = tail.preNode;
tail.preNode = max;
return max;
}
</pre>
3.选择排序:
<pre>
public class LinkedList {
public static void main(String[] args) {
//创建一个链表node1->node2->node3->node4->node5
ListNode head = new ListNode();
ListNode node1 = new ListNode(10);
ListNode node2 = new ListNode(8);
ListNode node3 = new ListNode(9);