スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

マージソート

マージソートを完成させる前に、必要となる関数を作成。
ソート済み配列をマージするプログラム。

#include <stdio.h>
#include <time.h>

void merge(int a[] , int na, int b[], int nb, int c[]);
void disp(int data[], int size);

int main(void){

int arrayA[] = {2,4,5,7,8,10,15,20,30,40};
int arrayB[] = {11,25,30,35};

int size_a = sizeof(arrayA)/ sizeof(int);
int size_b = sizeof(arrayB)/ sizeof(int);
int arrayC[(size_a + size_b)];

puts("arrayA...");
disp(arrayA, size_a);
puts("arrayB...");
disp(arrayB, size_b);
puts("arrayC...");
merge(arrayA, size_a, arrayB, size_b, arrayC);
disp(arrayC, size_a + size_b);

return 0;

}

void disp(int data[], int size){
int idx;
for(idx=0;idx<size;idx++)
printf("[%d]:%d\n", idx, data[idx]);
}

void merge(int a[] , int na, int b[], int nb, int c[]){

int pa = 0;
int pb = 0;
int pc = 0;

while(pa < na && pb < nb)
c[pc++] = (a[pa] <= b[pb])?a[pa++]:b[pb++];
while(pa < na )
c[pc++] = a[pa++];
while(pb < nb )
c[pc++] = b[pb++];

}
スポンサーサイト
プロフィール

tjnet777

Author:tjnet777
Solaris, VPNのサポート業務を1年

金融系SIerで業務アプリの開発、メンテを3年半

離職して大学院大学 1年生

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。