willsun888
5/7/2013 - 5:56 AM

希尔排序.

希尔排序.

//希尔排序
#include<stdio.h>
#include<time.h>
#define SWAP(x,y) ((x)=(x)^(y),(y)=(x)^(y),(x)=(x)^(y))
void shell(int a[],int n)
{
    int d=n,i;
    while(d>1)
    {
        d=(d+1)/2;
        for(i=0;i<n-d;i++)
        {
            if(a[d+i]<a[i])
                SWAP(a[d+i],a[i]);
        }
    }
}

void main()
{
    srand(time(0));
    int i,a[10];
    for(i=0;i<10;i++)
    {
        a[i]=rand()%100;
        printf("%d ",a[i]);
    }
    printf("\n");
    shell(a,10);
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
}