#i nclude "stdio.h" //冒泡排序 int a(M); //定义为全局变量 void PRand() a[i++]=m; void bublle() printf("after bublle :\n"); } void print() for(i=0;i<M;i++) printf("\n"); void main() PRand();C语言的排序算法
逍遥天子 发表于 2007-2-27 16:03:00
#i nclude "stdlib.h"
#define M 10
{
int m,i;
i=0;
while(i<M)
{
m=rand(); //随机产一个数字
m=m%100+1; //将随机产生的数字控制在1-100之间
}
}
{
int flag;
int i,j,temp;
for(i=0;i<M-1;i++)
{
flag=0; //利用flag可以减少循环次数。倘若数列已经有序则跳出循环
for(j=0;j<M-i-1;j++)
{
if(a[j]>a[j+1])
{
flag=1;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
if(flag==0)
break;
}
{
int i;
printf("%-4d",a[i]);
}
{
int i;
print();
print();
}
#i nclude "stdlib.h"
#define M 10
{
int m,i;
i=0;
while(i<M)
{
m=rand(); //随机产一个数字
m=m%100+1; //将随机产生的数字控制在1-100之间
}
}
{
int i,j,min;
int temp;
{
min=i;
for(j=i;j<M;j++)
{
if(a[min]>a[j])
{
min=j;
}
}
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
}
{
int i;
printf("%-4d",a[i]);
}
{
int i;
print();
print();
}
#i nclude "stdlib.h"
#define M 10
{
int m,i;
i=0;
while(i<M)
{
m=rand(); //随机产一个数字
m=m%100+1; //将随机产生的数字控制在1-100之间
}
}
{
int i,j;
int temp;
{
temp=a[i];
for(j=i-1;j>=0 && a[j]>temp;j--)
{
a[j+1]=a[j];
}
a[++j]=temp;
}
}
{
int i;
printf("%-4d",a[i]);
}
{
int i;
PRand();
print();
print();
}
#i nclude <stdlib.h>
#define M 10
{
int m,i;
while(i<M)
{
m=rand();
m=m%100+1;
}
}
{
int i;
printf("%-4d",a[i]);
}
void shellsort()
{
int i,j,gap;
int min;
while(1)
{
gap=gap/2;
{
min=a[i];
for(j=i-gap;j>=0 && min<a[j];j=j-gap)
{
a[j+gap]=a[j];
}
#i nclude <stdlib.h>
#define M 10
{ //也是为了说明C语言中改变参数值的“唯一”的两种方法。传地址和全局变量。
int count=0;
int m;
while(count<num)
{
m=rand();
m=m%100+1;
*p++=m;
count++;
}
}
{
int count=0;
{
count++;
printf("%-4d",*a++);
}
}
{
int temp=list[left]; //基准数定为序列左边第一个数
int tp;
int i,j;
j=right+1;
{
while(list[++i] < temp); //从左边找到一个比基准数大的数
while(list[--j] > temp); //从右边找到一个比基准数小的数
break;
list[i]=list[j];
list[j]=tp;
}
list[j]=temp;
}
{
int pivotpos;
{
pivotpos=swp(list,left,right); //分割序列成为两部分,左边的所有数均小于pivotpos,右边均大于。
}
}
{
int a[M];
int i;
printarray(a,M);
printf("after quicksort :\n");
printarray(a,M);
}
发表评论: