ゆーたクソ

ゆーたクソ

EDDY  2014-01-20 17:44:09 
通報
くんなくんな

コメントを投稿する

  • No.1 by EDDY  2014-01-20 17:45:42 

/* バケットソート */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 2000000 /* 要素の最大数 */
#define M 30 /* バケットの個数 */


int main(void) {
int element[MAX+1];
int B[M+1];
clock_t before, after; /* プログラムで使われたプロセッサ時間を返す */
int i,j;
int num; /* 要素数の変数 */

srand(getpid());
printf("要素数:");
scanf("%d", &num);
for(i=1; i<= num; ++i) /* 要素の初期設定 */
element[i]= i;

before = clock(); /* 処理開始時のプロセッサ時刻を取得 */

/* ソーティング */
for(i=0; i<=M; ++i) B[i]=9999999; /* バケットの準備 */
for(i=1; i<=num; ++i) B[element[i]]=element[i]; /* 要素を放り込む */
j=0;
for(i=0; i<=M; ++i) {
if(B[i]!=9999999) {++j; element[j]=B[i];}
};

after = clock(); /* 処理終了時のプロセッサ時刻を取得 */

printf("%f\n", (float)(after - before)/CLOCKS_PER_SEC);
/* (アルゴリズムに要した時間)=(処理後の時刻)-(処理前の時刻) */
/* clock()/CLOCKS_PER_SECは秒で表された時間 */

/* 結果の表示 */ /*
for(i=1; i<=N;++i) printf("%4d",element[i]);
printf("\n");
*/
return 0;
}

  • No.2 by 匿名さん  2014-01-20 18:54:01 

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

#define MAX 180000 /* 要素の最大数 */
#define M 9 /* バケットの個数(基数)-1 */
#define D 6 /* 要素の最大桁-1 */

int ipow10(int n)
{
int i,i10;

i10=1; for(i=1; i<=n; ++i) i10*=10;
return(i10);
}

int main(void) {
int element[MAX+1];
int A[M+1][MAX+1]={0,0};
int P[M+1]={0};
clock_t before, after; /* プログラムで使われたプロセッサ時間を返す */
int i,j,k,l,e;
int num; /* 要素数の変数 */

srand(getpid());
printf("要素数:");
scanf("%d", &num);
for(i=1; i<= num; ++i) /* 要素の初期設定 */
element[i]=rand();

before = clock(); /* 処理開始時のプロセッサ時刻を取得 */

/* ソーティング */
/* 最下位桁よりバケットソートを行う */
for(i=0; i<=D; ++i){
for(j=0; j<=M; ++j) P[j] = 0; /* バケットの準備 */
for(j=1; j<=num; ++j){
e=element[j]/ipow10(i); e%=10; /* e:A[j]の10^iのくらいの桁 */
A[e][P[e]] = element[j]; ++P[e]; /* 要素を放り込む */
}
k=0;
for(j=0; j<=M; ++j){
if(P[j]>0) for(l=0; l<P[j]; ++l){
++k; element[k] = A[j][l];
}
}
}
after = clock(); /* 処理終了時のプロセッサ時刻を取得 */

printf("%f\n", (float)(after - before)/CLOCKS_PER_SEC);
/* (アルゴリズムに要した時間)=(処理後の時刻)-(処理前の時刻) */
/* clock()/CLOCKS_PER_SECは秒で表された時間 */

/*結果の出力
for(j=1; j<=num; ++j)
printf("%d ",A[j]);
printf("\n");
*/

return 0;
}

[PR]リアルタイムでチャットするなら老舗で安心チャットのチャベリ!
ニックネーム: 又は匿名を選択:

トリップ:

※任意 半角英数8-16文字 下げ
利用規約 掲示板マナー
※トリップに特定の文字列を入力することで、自分だけのIDが表示されます
※必ず利用規約を熟読し、同意した上でご投稿ください
※顔文字など、全角の漢字・ひらがな・カタカナ含まない文章は投稿できません。
※メールアドレスや電話番号などの個人情報や、メル友の募集、出会い目的の投稿はご遠慮ください

[お勧め]初心者さん向けトピック  [ヒント]友達の作り方  [募集]セイチャットを広めよう

他のトピックを探す:質問・相談







トピック検索


【 トピックの作成はこちらから 】

カテゴリ


トピック名


ニックネーム

(ニックネームはリストから選択もできます: )

トピック本文

トリップ:

※任意 半角英数8-16文字

※トリップに特定の文字列を入力することで、自分だけのIDが表示されます
※メールアドレスや電話番号などの個人情報や、メル友の募集、出会い目的の投稿はご遠慮ください
利用規約   掲示板マナー





管理人室


キーワードでトピックを探す
初心者 / 小学生 / 中学生 / 高校生 / 部活 / 音楽 / 恋愛 / 小説 / しりとり / 旧セイチャット・旧セイクラブ

「これらのキーワードで検索した結果に、自分が新しく作ったトピックを表示したい」というご要望がありましたら、管理人まで、自分のトピック名と表示させたいキーワード名をご連絡ください。

最近見たトピック