计算机软件基础的查找和排序代码,计算机软件技术基础排序查找源代码.doc

冒泡排序

#include

#define X 10

typedef int ET;

void bubsort(p,n)

int n;ET p[];

{

int m,k,j,i;

ET d;k=0;m=n-1;

while (k

{

j=m-1;m=0;

for(i=k;i<=j;i++) /*从前往后扫描*/

if (p[i]>p[i+1])/*发现逆序进行交换*/

{

d=p[i];p[i]=p[i+1];p[i+1]=d;m=i;

}

j=k+1;k=0;

for (i=m;i>=j;i--)/*从后往前扫描*/

{

if (p[i-1]>p[i])/*发现逆序进行交换*/

{

d=p[i];p[i]=p[i-1];p[i-1]=d;k=i;

}

}

}

return;

}

void main()

{

int a[10],i=0,k;

printf("输入10个数\n");

for(i=0;i

{

printf("请输入第%d个数:",i+1);

scanf("%d",&a[i]);

}

printf("原数组为:\n");

for(k=0;k

{

printf("%d ",a[k]);

}

printf("\n");

bubsort(a,X);

printf("排序后的数组为:\n");

for(k=0;k

{

printf("%d ",a[k]);

}

printf("\n");

}

快速排序

#include

#define X 10

typedef int ET;

void qksort1(p,m,n)

int m,n;

ET p[];

{ int i;

if (n>m) /*子表不空*/

{i=split(p,m,n); /*分割*/

qksort1(p,m,i-1); /*对前子表进行快速排序*/

qksort1(p,i+1,n);} /*对后子表进行快速排序*/

return;}

int split(p,m,n) /*返回分界线位置*/

int m,n; ET p[];

{ int i,j,k,u;

ET t;

i=m; j=n; k=(i+j)/2;

if ((p[i]>=p[j])&&(p[j]>=p[k])) u=j; /*选取一个元素*/

else if ((p[i]>=p[k])&&(p[k]>=p[j])) u=k;

else u=i;

t=p[u];

p[u]=p[i];

while (i!=j)

{ while ((i=t)) j=j-1;

if (i

{ p[i]=p[j]; i=i+1;

while ((i

if (i

{ p[j]=p[i];

j=j-1;}}}

p[i]=t;

return(i);

}

void main()

{

int a[10],i=0,k;

printf("输入10个数\n");

for(i=0;i

{

printf("请输入第%d个数:",i+1);

scanf("%d",&a[i]);

}

printf("原数组为:\n");

for(k=0;k

{

printf("%d ",a[k]);

}

printf("\n");

qksort1(a,0,X);

printf("排序后的数组为:\n");

for(k=0;k

{

printf("%d ",a[k]);

}

printf("\n");

}

简单排序

#include

#define X 10

typedef int ET;

void insort(p,n)

int n; ET p[];

{

int j,k;

ET t;

for (j=1;j

{

t=p[j];

k=j-1;

while ((k>=0)&&(p[k]>t))

{

p[k+1]=p[k];

k=k-1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值