选择排序法(通过交换指针对应的VAL值,查找最小的值的方法实现了链表的选择排序)
选取第一个元素作为枢纽元的版本,因为链表选择最后一元素需要遍历一遍(第一个元素确定后指针开始后移开始对第二个数进行操作)
/**
- Definition for singly-linked list.
- struct ListNode {
-
int val;
-
ListNode *next;
-
ListNode(int x) : val(x), next(NULL) {}
- };
/
Solution {
public:
ListNode insertionSortList(ListNode* head) {
if(head == NULL || head->next == NULL)return head;
ListNodefront=head->next; //定义一个快指针;
ListNodep=head;
int temp;
ListNode*flag=head; //将flag指针作为目标指针
while(flag->next!=NULL){
while(front!=NULL)
{
if(p->val > front->val) // 寻找链表中的最小的值,保留其指针
{
p=front;
}
front=front->next;
}
swap(p->val,flag->val); //将最小的值放在head的第一个位置
front=flag->next; //将指针下移开始查找链表中的第二小的值的指针,以此类推
p=flag->next;
flag=flag->next;
}
return head; //返回head;
}
};