将十进制的数转化为其他进制的数:
#include
#define ary 20
int main(void)
{
int k=0,base, x[ary],t,num,j;
scanf("%d%d",&base,&num);
t=num;
if(base<10){
do{
x[k++]=t%base;t=t/base;}
while(t!=0);}
else
do{
if(t%base<10){
x[k++]=t%base;t=t/base;}
else{
x[k++]='A'+t%base-10;t=t/base;}}
while(t!=0);
for(j=k-1;j>=0;j--){
if(x[j]>=65)
printf("%c",x[j]);
else
printf("%d",x[j]);}
}
冒泡法排序,第一次将最大的数沉到底部,第二趟将次大的数沉到倒数第二个;即每一次都从头开始向下比:
#include
#define ary 10
int main(void)
{
int i,j,t,x[ary]={9,8,7,4,5,6,3,1,2,16},k;
for(i=0;i
for(j=0;j
if(x[j]>x[j+1]){
t=x[j];x[j]=x[j+1];x[j+1]=t;}
for(k=0;k
printf("%5d",x[k]);
}
交换法排序,第一次将第一个元素一次与后面比较,将较小的放到第一个;第二次将第二个元素与下面的比较,是第二个为第二小。所以一次与下一个元素比较:
#include
#define ary 10
int main(void)
{
int i,j,k,t,x[ary]={16,9,8,6,34,2,1,4,5,7};
for(i=0;i
for(j=i+1;j
if(x[i]>x[j]){
t=x[i];x[i]=x[j];x[j]=t;}
for(k=0;k
printf("%5d",x[k]);
}
选择法排序,即从第一个元素开始寻找最小元素的下标,小虎哥比较过程中改变最小下表的记录值,第二次再从第二个开始找:
#include
#define ary 10
int main(void)
{
int i,j,point,t,k,x[ary]={19,12,13,5,6,8,7,34,23,21};
for(i=0;i
point=i;
for(j=i+1;j
if(x[point]>x[j])
point=j;
if(point!=i){
t=x[i];x[i]=x[point];x[point]=t;}
}
for(k=0;k
printf("%5d",x[k]);
}
插入法排序,先将前两个排序,就是讲第二个元素插到第一个元素的适当位置,如果比他小,那么原来的元素要后退,比他大,后面一个元素即是所插入的元素:
#include
#define ary 10
int main(void)
{
int i,j,t,k,x[ary]={1,4,56,76,41,23,21,13,15,18};
for(i=1;i
t=x[i];
for(j=i-1;t=0;j--)
x[j+1]=x[j];
x[j+1]=t;
}
for(k=0;k
printf("%5d",x[k]);
}
线性查找法,依次查找,并用一个初值判断能否找到:
#include
#define ary 10
int main(void)
{
int num,i,x[ary]={1,2,3,34,35,5,6,57,67,68},point=-1;
scanf("%d",&num);
for(i=0;i
if(x[i]==num){
point=i;
break;}
if(point!=-1)
printf("found! %d",point);
else
printf("no found");
}
折半查找法,已经排好序的:
#include
#def