链表中单层循环实现插入排序

xiaoxiao2021-03-01  15

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)) //q插入在x和p之间 { m = q->next; x->next = q; q->next = p; q = m; //下一结点 x = head; //x、p复位 p = head->next; } else //继续向后查找插入位置 { x = x->next; p = p->next; } } }

首先断开链表,第一部分看作是有序的,第二部分从第一个开始id与第一部分的id比较,找到要插入的位置,找到后将第一部分的断开,第二部分的第一个插入到找到的位置,第二部分的第一个向下移,第一部分从头节点开始重新比较。

转载请注明原文地址: https://www.6miu.com/read-3100184.html

最新回复(0)