「なるほど!アルゴリズム「ノート
バケットソート名前がソートされたものを保持するために、シーケンシャル同じもので、バケツのような、示唆しています。
そして、あなたの例を与える:
私は今の行に順序12334を昇順に5点3,1,2,4,3(5点満点)5つの分数の必要性を持って、私たちはどのようにそれの一種行バケツを使うのか?
コードは以下の通りであります:
#include<stdio.h>
int main()
{
int buc[6]={0}; //定义木桶并初始化,因为我们要在012345个分数中排序所以要定义6个桶。
int i,j,t,n;
scanf("%d",&n); //输入一个数n+1,表示接下来有n个数要排序
for(i=1;i<n;i++) //循环读入n个数,并进行排序
{
scanf("%d",&t); //把每一个数读到变量t中;
buc[t]++; //进行计数;
}
for(i=0;i<=5;i++) //判断0到5的桶
for(j=1;j<=buc[i];j++)//出现了几次就将桶的编号打印几次;
printf("%d",i);
}
このサイクルで7行目では、それぞれ、対応するバケット内スコアであろう。
初めてBUCするために、我々は、BUC [T] ++後の7行目に2個の3と、ちょうど31243として表題のような、スコアを印刷する12行目と13サイクル目の[3] + +一度、前回のエントリが3であるので、BUC [3] 1を追加していくので、BUC [3]を2回蓄積します。
図3は、相当する画分IIIバケツ、バケツに入れ、最終的にIIIは、出力の順番サイクルのいくつかのスコア3を、持って見ています。
時間の問題の複雑さは、7行目のサイクルM倍第12及び第13行のM + Nサイクル時間、従って全体のランキングアルゴリズムは、M + N + M + N時間の合計を実行します。
我々大文字O時間の複雑さ、このアルゴリズムの時間計算量は、我々は時間の複雑性は無視できる小さな一定の場合というO(2 *(M + N)と言っている、そして最終的にはO(M +であるので、 N)。
、私は自分の理解に言ってみましょう私はあなたが配列をソートしたいと内容が類似しているアイテムの数は、項目の固定長配列と出力をソートするために、レコードの数ではなく、非常に複雑で、この種を使用することができるときだと思います。
この順序は、真の意味でのバケットソートとはみなされない、本当のバケットソートアルゴリズムはこれよりも複雑です。
これは、ブログを書いて、私の最初の時間は、ちょうど再びブック、自身の要約を読んで、コードが借りて、ブックにいくつかの変更を行いましたさ。
誤解や間違っがある場合は、私の兄を修正してください。