鍊錶排序 歸併排序

2021-08-09 07:46:45 字數 523 閱讀 7746

要求在空間複雜度為o(1)的情況下對鍊錶進行排序,在不考慮時間複雜度的情況下可以考慮氣泡排序,只對鍊錶中的值進行操作,這樣時間複雜度為o(n^2)。用歸併排序,時間複雜度為o(nlogn)。以下為歸併排序**實現

public listnode sortlist(listnode head) 

private static listnode getmidnode(listnode head)

return slow;

}private static listnode mergelistnode(listnode left, listnode right)else

temp_node = temp_node.next;

}if(left != null)

temp_node.next = left;

if(right != null)

temp_node.next = right;

return temp.next;

}

鍊錶歸併排序

include include include include include using namespace std typedef int type typedef struct nodetag node node build type a,int n pnode pnext null retu...

鍊錶歸併排序

主要思路 1 如果為null或者只有乙個節點那麼直接返回 2 將鍊錶分成兩部分,分別進行排序,形成兩個有序鍊錶 3 將兩個有序鍊錶合併 void merge sort struct node list void split struct node head,struct node lista,str...

鍊錶 歸併排序

時間複雜度o nlogn 空間複雜度o 1 include include 定義鍊錶 typedef struct listnode linklist linklist head null 建立鍊錶 linklist createlist int arr,int len rear next null...