鍊錶之排序鍊錶

2022-09-13 02:30:20 字數 2673 閱讀 5760

148. 排序鍊錶 - 力扣(leetcode) (leetcode-cn.com)

題目要求n(logn),所以這邊考慮歸併排序

先分,再合,合的話就是合併兩個有序鍊錶,和合併兩個有序陣列一樣簡單

class solution 

listnode* merge(listnode* l1, listnode* l2) 

ptr->next = l1 ? l1 : l2;

return head->next;}};

毒瘤官方答案,搞乙個tail值,真垃圾

1/**

2* definition for singly-linked list.

3* struct listnode

7* listnode(int x) : val(x), next(nullptr) {}

8* listnode(int x, listnode *next) : val(x), next(next) {}

9* };

10*/

11class

solution

16 listnode* divide(listnode* head,listnode*tail)

23 listnode *slow = head,*fast =head;

24while(fast!=tail&&fast->next!=tail)

28 listnode *t1 =divide(head,slow);

29 listnode *t2 = divide(slow,tail);//

不是nutllptr是tail

3031

return

merge(t1,t2);32}

33 listnode* merge(listnode* t1,listnode*t2)else

44 t = t->next;

45if(t1!=nullptr)

48else

if(t2!=nullptr)51}

52return head->next ;//

尾插法,頭沒有資料的53}

54 };

view code

存乙個別人的七份簡潔答案

1class

solution

1213

private

:14 listnode* merge(listnode* l1, listnode*l2)

20 ptr->next = l1 ?l1 : l2;

21return

sub.next;22}

23};

24紅黑樹排序

25利用stl裡面的set容器底層是紅黑樹實現,來實現樹排序

2627

28class

solution

40};

41堆排序

42也是利用stl裡面的優先佇列底層是堆排序演算法,來實現。

4344

45class

solution

56return

head;57}

58};

59以下**是力扣因為時間過不了的**,但是邏輯沒問題。大家看看,當擴張思維了。

6061

**邏輯都是,把陣列當成中間變數來做排序,再最終轉化成鍊錶:

62 鍊錶->陣列->鍊錶

6364

快排65

66class

solution

7879

private:80

void quicksort(vector&worker, int l, int

r) 86

87int patition(vector&worker, int l, int

r) 92

swap(worker[l], worker[r]);

93return

l;94}95

};96

97class

solution

110111

private

:112

void quicksort(vector &worker, int l, int

r) 118

119int patition(vector &worker, int l, int

r) 124

swap(worker[l], worker[r]);

125return

l;126

}127

};128

冒泡129

鍊錶 排序鍊錶

樂扣原題 definition for singly linked list.public class listnode class solution 將鍊錶轉化為陣列 listlist new arraylist while null head 陣列遞增排序 collections.sort li...

鍊錶 鍊錶排序 中等

描述 在 o n log n 時間複雜度和常數級的空間複雜度下給鍊錶排序。您在真實的面試中是否遇到過這個題?樣例給出 1 3 2 null,給它排序變成 1 2 3 null.挑戰分別用歸併排序和快速排序做一遍。題目鏈結 分析快速排序 演算法只交換節點的val值,平均時間複雜度o nlogn 不考慮...

有序鍊錶的建立之鍊錶排序

time limit 1000ms memory limit 65536kb submit statistic problem description 輸入n個無序的整數,建立乙個有序鍊錶,鍊錶中的結點按照數值非降序排列,輸出該有序鍊錶。input 第一行輸入整數個數n 第二行輸入n個無序的整數。o...