歸併排序:
將資料一步步細分,對每一部分進行排序,在將各個部分合起來排序;
**實現(歸併排序):
# 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,...