鍊錶歸併排序

2021-06-06 07:27:57 字數 911 閱讀 7621

#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 ...