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); }