二分查找树的知识点,链表可以快速变化大小,却不可以快速查找,除了数组可以快速二分查找以外,另一个就是二分查找树。

链表排序:

冒泡排序,交换链表的值

class Solution {

public:
    ListNode *bubbleSortList(ListNode *head) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        //链表快速排序
        if(head == NULL || head->next == NULL)return head;
        ListNode *p = NULL;
        bool isChange = true;
        while(p != head->next && isChange)//初始值p为空,然后从最后一个不断向前进
        {
            ListNode *q = head;
            isChange = false;//标志当前这一轮中又没有发生元素交换,如果没有则表示数组已经有序
            for(; q->next && q->next != p; q = q->next)
            {
                if(q->val > q->next->val)
                {
                    swap(q->val, q->next->val);
                    isChange = true;
                }
            }
            p = q;
        }
        return head;
    }
};
posted on 2017-08-05 14:12  bloomingFlower  阅读(123)  评论(0编辑  收藏  举报