菜雞筆記之 歸併排序

2021-10-07 08:46:03 字數 1071 閱讀 7033

歸併排序:

將資料一步步細分,對每一部分進行排序,在將各個部分合起來排序;

**實現(歸併排序):

# include

# include

# include

intmain

(void

)//輸入

for(

int i =

0;i)//排序

void

mergesort

(int*,

int,

int,

int*);

void

merge

(int*,

int,

int,

int,

int*);

mergesort

(array,

0,n-

1,temp)

;//輸出

for(

int i =

0;i)//記憶體釋放

free

(temp)

;free

(array)

;return0;

}void

merge

(int

* array,

int left,

int mid,

int right,

int* temp)

//對每一部分進行「治理」

else

}while

(i<=mid)

while

(j<=right)

memcpy

(array,temp,

sizeof

(int)*

(right-left+1)

);//把temp中的數拷貝到array

}void

mergesort

(int

* array,

int left,

int right,

int* temp)

//分(歸併)並排序

}

菜雞筆記之 希爾排序

希爾排序 時間複雜度 平均o nlogn 穩定性 不穩定排序 思路 將資料分組,每相隔step 步長 對每一組進行插入排序。希爾排序為插入排序的進一步優化 實現 希爾排序 include include intmain void 輸入陣列 for int i 0 i 排序 void shellsor...

菜雞筆記之 桶排序

桶排序 桶排序可以理解為簡化版的計數排序,自然地限制條件就更多,適用範圍更窄,原理跟計數排序類似,而且比較簡單 桶排序大概比較適合於元素為正整數,且最大值不太大地情形,而計數排序還適用於整數 可含負整數 跨度不太大的情形,兩者都不適用於字串排序。時間複雜度 o n k 實現 桶排序 include ...

自學筆記之歸併排序

自學筆記之歸併排序 歸併排序主要利用了分治思想,它的過程如下 1.分解成子問題 將n個元素分解為兩個具有n 2的子問題。2.遞迴求解子問題 利用遞迴排序這兩個子問題。3.歸併子問題 歸併子問題的解來產生排序好的答案。歸併排序中最終要的一步是將兩個子問題的解合併,在這裡我們設計乙個函式merge a,...