冒泡排序
#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;
}