|
|
|
@ -0,0 +1,42 @@
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
#include<string.h>
|
|
|
|
|
#define len 5
|
|
|
|
|
void shellSort(int a[])
|
|
|
|
|
{
|
|
|
|
|
int i,j,dk,temp;
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>dk<64>ı仯<C4B1><E4BBAF>dk = dk/2
|
|
|
|
|
for(dk=len/2;dk>0;dk/=2)
|
|
|
|
|
{
|
|
|
|
|
for(i=dk;i<len;i++)
|
|
|
|
|
{
|
|
|
|
|
//<2F>轫a[i]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
|
|
|
|
|
if(a[i] < a[i-dk])
|
|
|
|
|
{
|
|
|
|
|
//<2F>浽<EFBFBD><E6B5BD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
temp = a[i];
|
|
|
|
|
for(j=i-dk;j>=0&&temp<a[j];j-=dk)
|
|
|
|
|
{
|
|
|
|
|
//ͳһ<CDB3><D2BB>¼<EFBFBD><C2BC><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
a[j+dk] = a[j];
|
|
|
|
|
}
|
|
|
|
|
a[j+dk] = temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int a[] = {45,32,56,71,12};
|
|
|
|
|
int i;
|
|
|
|
|
printf("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>\n");
|
|
|
|
|
for(i=0;i<len;i++)
|
|
|
|
|
{
|
|
|
|
|
printf("%d ", a[i]);
|
|
|
|
|
}
|
|
|
|
|
printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
shellSort(a);
|
|
|
|
|
for(i=0;i<len;i++)
|
|
|
|
|
{
|
|
|
|
|
printf("%d ", a[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|