C++簡易バケツソート
1865 ワード
簡易バケツソート:これは最も速く、最も簡単なソートですが、ソートする必要がある数の範囲が大きい場合は、メモリが非常に占められます.
原理:実は範囲内のすべての整数を1つのバケツとして、この整数はバケツのシーケンス番号を表して、それから入力した数をバケツのシーケンス番号と1対1で比較して、もし同じならばこの数をバケツの中に入れて、最後にバケツのシーケンス番号に従って、小さいから大きいまであるいは大きいから小さいまで数のバケツのシーケンス番号を印刷して、いくつかの数が何回印刷します.
方法:
1.最小バケツと最大バケツ(並べ替えが必要なすべての数の範囲)を特定します.
2.バケツの数を計算し、すべてのバケツを一緒に配置します.初期にはバケツごとに数がありません(範囲に含まれる整数を配列に作成し、すべての要素を0にします).
3.バケツ番号と同じ数を対応するバケツに入れる(数がある配列の位置を算出し、この位置の要素を1つ加える)
4.必要な順番でバケツの中の数を出します(配列中の現在位置の数が多ければ、この数を配列中の位置に何回印刷しますか)
完全コード(c++)
原理:実は範囲内のすべての整数を1つのバケツとして、この整数はバケツのシーケンス番号を表して、それから入力した数をバケツのシーケンス番号と1対1で比較して、もし同じならばこの数をバケツの中に入れて、最後にバケツのシーケンス番号に従って、小さいから大きいまであるいは大きいから小さいまで数のバケツのシーケンス番号を印刷して、いくつかの数が何回印刷します.
方法:
1.最小バケツと最大バケツ(並べ替えが必要なすべての数の範囲)を特定します.
int a,b;
//
cout<>a;
cout<>b;
2.バケツの数を計算し、すべてのバケツを一緒に配置します.初期にはバケツごとに数がありません(範囲に含まれる整数を配列に作成し、すべての要素を0にします).
int length;
length=b-a; //
int zs[length]={0}; // , 0
3.バケツ番号と同じ数を対応するバケツに入れる(数がある配列の位置を算出し、この位置の要素を1つ加える)
cout<>sr)
{ int ls;
ls=sr-a; //
zs[ls]++; //
if(cin.get()=='
') //
break;
}
4.必要な順番でバケツの中の数を出します(配列中の現在位置の数が多ければ、この数を配列中の位置に何回印刷しますか)
for(int h=length;h>=0;h--) // ,
{
for(int j=0;j
完全コード(c++)
#include
using namespace std;
int main()
{
int a,b,length,sr; //
cout<>a;
cout<>b;
length=b-a; //
int zs[length]={0}; // ,
cout<>sr)
{
int ls
ls=sr-a;
zs[ls]++; //
if(cin.get()=='
') //
break;
}
for(int h=length;h>=0;h--) // ,
{ // for(int h=0;h<=length;h++)
for(int j=0;j