<pre name="code" class="cpp">#include<stdio.h>
int main()
{
int isbn[1001],member,omem;
int a,i;
puts("输入调查数:");
for(i=1;i<=1000;i++)
isbn[i]=0;<span style="white-space:pre"> </span>
while(scanf("%d",&member)!=1)
puts("输入错误,请重新输入。");
omem=member;
printf("请输入%d个ISBN号\n",member);
for(i=1;i<=member;i++)
{
scanf("%d",&a);
if(isbn[a]>0) omem--;
else isbn[a]=1;
}
printf("%d\n",omem);
for(i=1;i<=1000;i++)
{
if(isbn[i]!=0)
printf("%d ",i);
}
getchar();
getchar();
}
章第4节 小哼买书
桶排序版本
技巧:多大范围就有多少个桶。
</pre><p><img src="" alt="" /></p><p>冒泡排序版本:</p><p>技巧:双重循环,每小循环一次就比较一次(从第一个数与第二个数开始比),每大循环一次就冒一个泡;</p><p></p><pre code_snippet_id="512052" snippet_file_name="blog_20141107_5_3008795" name="code" class="cpp">#include<stdio.h>
int main()
{
int isbn[101],member,omem;
int a,i,j,temp;
puts("输入调查数:");
for(i=0;i<=100;i++)
isbn[i]=0;//初始化
while(scanf("%d",&member)!=1)
puts("输入错误,请重新输入。");
omem=member;
printf("请输入%d个ISBN号\n",member);
//输入与冒泡排序
for(i=1;i<=member;i++)
scanf("%d",&isbn[i]);
for(i=1;i<=member-1;i++)
for(j=1;j<=member-1;j++)
if(isbn[j]>isbn[j+1])
{
temp=isbn[j+1];
isbn[j+1]=isbn[j];
isbn[j]=temp;
}
printf("%d ",isbn[1]);
for(i=2;i<=member;i++)
{
if(isbn[i]==isbn[i-1]) omem--;
else printf("%d ",isbn[i]);
}
getchar();
getchar();
}
快速排序-函数版
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void *a, const void *b)
{
return(*(int *)a-*(int *)b);
}
int main()
{
int isbn[101],member,omem;
int a,i,j,temp,std;
puts("输入调查数:");
for(i=0;i<=100;i++)
isbn[i]=0;//初始化
while(scanf("%d",&member)!=1)
puts("输入错误,请重新输入。");
omem=member;
printf("请输入%d个ISBN号\n",member);
//输入
for(i=1;i<=member;i++) scanf("%d",&isbn[i]);
//快速排序
qsort((void*)&isbn[1],member,sizeof(int),cmp);
//输出
printf("%d ",isbn[1]);
for(i=2;i<=member;i++)
{
if(isbn[i]==isbn[i-1]) omem--;
else printf("%d ",isbn[i]);
}
getchar();
getchar();
}