9
桶排序(箱排序)
:分块的排序算法,将数组分到有限数量的桶里,每个桶再分别排序,把数组中的数据根据函数映射方法分配到若干个桶中,分别对各个桶排序,最后按顺序去除桶中的数据(适用于数据分配均匀,数据比较大,相对集中的情况)
eg:
输入包含2行。第一行包含两个整数N和M,表示班级有N位同学,同学们共有
M次报出编号。约定2≤N, M ≤1000。
第二行包含M个整数,分别为M次报出的编号。约定所有编号都在合理范围内。
int N , M;
int flag=0;
cin>>N>>M;
int a[1002];
int b[1002]={0};
for(int i=0;i<M;i++)
{
cin>>a[i];
b[a[i]]++;
}
for(int i=0;i<N;i++)
{
if(b[i]==0)//wei dao
{
flag=1;
cout<<i<<" ";
}
}
if(flag==0) cout<<N;
:分块的排序算法,将数组分到有限数量的桶里,每个桶再分别排序,把数组中的数据根据函数映射方法分配到若干个桶中,分别对各个桶排序,最后按顺序去除桶中的数据(适用于数据分配均匀,数据比较大,相对集中的情况)
eg:
输入包含2行。第一行包含两个整数N和M,表示班级有N位同学,同学们共有
M次报出编号。约定2≤N, M ≤1000。
第二行包含M个整数,分别为M次报出的编号。约定所有编号都在合理范围内。
int N , M;
int flag=0;
cin>>N>>M;
int a[1002];
int b[1002]={0};
for(int i=0;i<M;i++)
{
cin>>a[i];
b[a[i]]++;
}
for(int i=0;i<N;i++)
{
if(b[i]==0)//wei dao
{
flag=1;
cout<<i<<" ";
}
}
if(flag==0) cout<<N;
全部评论
相关推荐