typedef int KeyType;
typedef int Other_Data;
typedef struct{
KeyType key;
Other_Data other_data;
}RecordType;
int ShellInsert(RecordType record[],int nLength,int delta){
int j = 0 ;
for (int i = 1+delta ; i < nLength; i++)
{
if (record[i].key < record[i-delta].key)
{
record[0] = record[i];
for (j = i - delta ; j > 0 && record[0].key < record[j].key ; j-=delta)
record[j+delta] = record[j];
record[j+delta] = record[j];
}
}
return 0;
}
void ShellSort(RecordType record[],int nLength,int delta[],int n)
{
for (int i = 0 ; i <= n -1 ; ++i)
{
ShellInsert(record,nLength,delta[i]);
}
for (int i = 1 ; i < 9 ; i++)
{
printf("%d ",record[i]);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int record[] = {0,48,62,35,77,55,14,35,98};
RecordType recordT[9];
for (int i = 0 ; i < 9 ; i++)
{
recordT[i].key = record[i];
}
int delta[] = {1,2,4};
ShellSort(recordT,9,delta,3);
return 0;
}