C言語のバブルソート、クイックソート法、ヒルソート法
18917 ワード
プログラミングのソート方法が多く、プログラムの良し悪しはアルゴリズムの使用に依存することが知られている.
以下はブロガーが今できるいくつかのソート方法で、皆さんに役に立つことを望んでいます.
泡のソート:
クイックソート:
以下はブロガーが今できるいくつかのソート方法で、皆さんに役に立つことを望んでいます.
:
#include
void out(int s[])//
{
int y;
for(y=0;y<10;y++)
{
printf(“%d”,s[y]);
}
}
void main()
{
int s[10]={10,9,8,6,7,5,4,3,2,1};
int end=9,start=0;//
int increment=end-start+1;//
int i=0,temp=0;
do// 1
{
increment=increment/3;//
for(i=start+increment;i<=end;i++)//
{
if(s[i-increment]>s[i])
{
temp=s[i];
int j=i-increment;
do{
s[j+increment]=s[j];
j-=increment;
}while(j>=start&&s[j]>temp);
s[j+increment]=temp;
}
}
}while(increment>1);
out(s);
}
泡のソート:
#include
int main()
{
int a[10];
int i,n,c;
printf(“ :
”);
//
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
//
for(i=0;i<10;i++)
{
for(n=0;n<10;n++)
{
if(a[i]<a[n])
{
c=a[n];
a[n]=a[i];
a[i]=c;
}
}
}
//
for(i=0;i<10;i++)
{
printf(“%d “,a[i]);
}
return 0;
}
クイックソート:
#include
void sort(int s[],int left,int right)//
{
if(left<right)// key
{
int i=left,j=right;
int key=s[left];
while(i<j)
{
while(i<j&&key<=s[j])// key ( )
j–;
s[i]=s[j];
while(i<j&&key>=s[i])// key ( )
i++;
s[j]=s[i];
}
s[i] = key;
sort(s,left,i-1);// 1, key
sort(s,i+1,right);// 2, key
}
}
void out(int s[])//
{
int i;
for(i=0;i<10;i++)
{
printf(“%d”,s[i]);
}
}
void main()
{
int s[10]={1,9,8,7,6,5,4,3,2,1};
out(s);
printf(“
”);
sort(s,0,9);
out(s);
}