#include #include #include #include //#include //using namespace std;
typedef int type;
typedef struct nodetag
node;
node* build(type a, int n)
pnode->pnext = null;
return plist;
}void print(node *plist)
while(plist != null)
printf("\n");
}node* divide(node* psublist)
}psecondlist = pmid->pnext;
pmid->pnext = null;
return psecondlist;
}node* divide2(node* psublist)
p2 = p1->pnext;
p1->pnext = null;
return p2;
}node* merge(node* plist1, node* plist2)
p1 = p1->pnext;
}else
p2 = p2->pnext;
}
}if(p1 != null) p->pnext = p1;
if(p2 != null) p->pnext = p2;
return phead;
}node* mergesort(node* plist)
return plist;
}#define n 100
int main(int argc, const char * argv)
鍊錶歸併排序
主要思路 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...
鍊錶歸併排序
題目描述 在o n log n 的時間內使用常數級空間複雜度對鍊錶進行排序。示例1輸入 複製返回值 複製說明 本題目包含複雜資料結構listnode,點此檢視相關資訊 define null null define node listnode class solution int len node ...