c语言一层循环插入排序
链表内实现
void sortBy(
LINK head, int(
*f)(
LINK,
LINK))
{
LINK p,q,m,x;
x
= head;
q
= head
->next;
p
= head
->next
= NULL;
while(q
!= NULL)
{
if(
!p
|| f(p,q))
{
m
= q
->next;
x
->next
= q;
q
->next
= p;
q
= m;
x
= head;
p
= head
->next;
}
else
{
x
= x
->next;
p
= p
->next;
}
}
}
首先断开链表,第一部分看作是有序的,第二部分从第一个开始id与第一部分的id比较,找到要插入的位置,找到后将第一部分的断开,第二部分的第一个插入到找到的位置,第二部分的第一个向下移,第一部分从头节点开始重新比较。
转载请注明原文地址: https://www.6miu.com/read-3100184.html