c語言歸併排序和快速排序

2021-06-19 18:41:09 字數 617 閱讀 1336

老師要求做排序的課程設計,在網上找到的**,看著不錯,收藏了

歸併排序和快速排序都是高效的排序演算法。

快速排序:最壞情況下執行時間o(n^2),平均執行時間o(nlogn),不需要輔助空間。不穩定的排序。

歸併排序:最好和最壞下,執行時間都為o(nlogn),需要輔助空間,穩定的排序。

實現:#include

#include

#include

//歸併排序

void mergesort(int *data,int x,int y,int *temp)//x,y分別表示陣列中的位置,是[x,y)

while(q>p&&data[p]<=data[q])//注意保證q>p防止基點與自身比較

p++;

if (pif (p==q)//找到基點位置}}

int main()

for (i=0;i<10;i++)//輸出未排序資料

printf("\n");

//mergesort(data,0,10,temp);

hoaresort(data,0,10);

for (i=0;i<10;i++)//輸出排序資料

printf("\n");

}

C語言歸併排序

描述 給定乙個數列,用歸併排序演算法把它排成公升序。輸入 第一行是乙個整數n n不大於10000 表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出 輸出排序後的數列,每個數字佔一行。歸併排序有兩個關鍵點 1.將兩個已經排好序的序列進行合併。歸併2個有序序列為1個有序序列 void merg...

C語言 歸併排序

歸併是將兩個或多個存序記錄序列合併成乙個有序序列。一般來說,一次對幾個有序記錄進行歸併,就稱為幾路歸併排序。以二路歸併排序為例,其基本方法如下 1 將 n 個記錄看成是 n 個長度為 1 的有序子表。2 將兩兩相鄰時有序序列進行歸併。3 重複執行步驟 2 直到歸併成乙個長度為 n 的有序表 如下所示...

C語言歸併排序

include include description 歸併排序 author qingq datetime 2021年3月8日20點03分 int length 待排序陣列長度 int a 待排序陣列 int b 輔助陣列b void mergesort int a,int low,int hig...