题目描述:
Sort a linked list using insertion sort.
插入排序,题目很简单,只是换成链表实现而已。
代码如下所示
public ListNode insertionSortList(ListNode head) {
ListNode cur=head;
int sum=0;
while(cur!=null){
cur=cur.next;
sum++;
}
for(int i=2;i<=sum;i++){
int n=i;
cur=head;
while(n>1){
cur=cur.next;
n--;
}
head=insert(head, cur);
}
return head;
}
public ListNode insert(ListNode head,ListNode insertNode){
ListNode start=new ListNode(-1);
start.next=head;
ListNode pre=start,cur=head,last=null,next=null;
//获得insertNode的前一个节点
while(cur!=insertNode){
cur=cur.next;
pre=pre.next;
}
last=pre;
pre=start;cur=head;
while(cur!=insertNode){
if(cur.val<=insertNode.val){
cur=cur.next;
pre=pre.next;
}else{
next=insertNode.next;
pre.next=insertNode;
insertNode.next=cur;
break;
}
}
if(cur==insertNode)
return head;
else{
last.next=next;
return start.next;
}
}
本文介绍了一种使用插入排序算法对链表进行排序的方法,并提供了一个具体的实现示例。
304

被折叠的 条评论
为什么被折叠?



