1.题目:
插入排序算法:
- 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
- .每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
- .重复直到所有输入数据插入完为止。
2.代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode* LinkList;
//pre->next遍历找寻插入位置
//temp防止断链
struct ListNode* insertionSortList(struct ListNode* head) {
if(!head)
return NULL;
LinkList L=(LinkList )malloc(sizeof(struct ListNode));
L->next=head;
LinkList p=head->next,pre,temp;
head->next=NULL;
while(p){
temp=p->next;
pre=L;
while(pre->next&&pre->next->val<p->val){
pre=pre->next;
}
p->next=pre->next;
pre->next=p;
p=temp;
}
return L->next;
}
3.知识点:
链表遍历+插入排序