[정렬 04/09] 01. shell sort

2011. 4. 9. 09:27Algospot/정렬

 
void shell(int a[],int len)
{//shell정렬
int i,j,k,h,temp;

for(h=1;h<len;h=3*h+1);//가장 유리한 h를 찾아냄
//h가 한번 오바되었기 때문에 3으로 줄이고 시작
//또 증감식의 h/=3은, (h-1)/3이 아니더라도 c특성상 버림을 하기때문에 가능
for(h/=3;h>0;h/=3)
{
for(i=0;i<h;i++)
{
for(j=i+h;j<len;j+=h)
{
temp=a[j];
for(k=j;k>h-1;k-=h)
{
if(a[k-h]>temp)
a[k]=a[k-h];
else
break;
a[k]=temp;
}
}
}
}
} 


'Algospot > 정렬' 카테고리의 다른 글

[정렬 04/18] 02. insert sort  (0) 2011.04.18