[アルゴリズム] マージソート – マージソート
ソートアルゴリズムをマージ (マージソート) ソートアルゴリズムの一つ以上に使用され. とほぼ同じ クイックソートアルゴリズム (クイックソート) 元の配列を分割して配置 2 半分, クイックソート要素はマージソートの間にランドマーク比較として使用されてますが、まだはっきりとに分かれています, 各配列をソート “ブレンド” 2 配列再配置.
ここで、アルゴリズムのC言語コードは:
#include <stdio.h>
/* xuat mang a tu vi tri l (left) den vi tri r (right)*/
void xuat(int a[], int l, int r) {
int i;
for (i = l; i <= r; i++){
printf("%d \t", a[i]);
}
printf("\n");
}
/* tron 2 mang
* mang a[l -> m] da sap xep
* mang a[m+1 -> r] da sap xep
* */
void tron(int a[], int l, int m, int r){
int i, length;
int l_end = m - 1;
i = l;
length = r - l;
int temp[length];
/* tron cac phan tu cua 2 mang con cua a*/
while(l <= l_end && m <= r) {
if (a[l] <= a[m]) {
temp[i++] = a[l++];
} else {
temp[i++] = a[m++];
}
}
/* Neu mang dau tien chua het */
while(l <= l_end) {
temp[i++] = a[l++];
}
/* Neu mang thu 2 chua het*/
while(m <= r) {
temp[i++] = a[m++];
}
for (i = 0; i <= length; i++, r--) {
a[r] = temp[r];
}
}
/* thuat toan sap xep tron*/
void sx_tron(int a[], int l, int r) {
//xuat(a, l, r);
int m;
if(l < r) {
m = (l + r) / 2;
sx_tron(a, l, m);
sx_tron(a, m + 1, r);
tron(a, l, m + 1, r);
}
}
int main(){
int n = 5;
int a[] = {2, 6, 3, 8, 5};
sx_tron(a, 0, n-1);
xuat(a, 0, n - 1);
return 0;
}



ようこそ、,
私は過度に精通していないよ通過:
int型の温度[長さ];
そしてサイトが一時に関連します. あなたは良いことを目的と意味がありませんでした説明することができます?
どうもありがとうございました!
int型の温度[長さ];
そのあなたの一時長の長さという名前の生の配列として、. 以下の温度として、, 例えば、一時[私 ] 配列の一時のi番目の位置で得られた値を意味する++.
ありがとう. 彼女はすぐそこティエンました
障害のあるアルゴリズムn個 >= 12.
ありがとう, 私は戻ってチェックします.