什么是插入排序?
在插入排序法中,將檢查數組中的每個元素,將它插入排序中的元素的適當位置,當最后一個元素插入到它適當的位置時,這個數組就排好序了。例如,
假如我們要對一個有5個元素的數組進行升序排列,假設第一個元素的值被假定為已排好序了,那么我們將第2個元素插入到已排序好的數組中的適當位置上,使得數組應該是排序好的。依次類推,將第3個插入到到已排序好的數組中的適當位置,使得插入后數組仍然是排序好的,。。。。。。
下面是一個插入排序的Demo:

int tarArr[]=
{10,1,35,12,7,17,66,6,56,26};
int size = sizeof(tarArr)/sizeof(tarArr[0]);

void insertSort(void)


{
int i=0,j=0;
for(i=1;i<size;i++)

{
int nextValue = tarArr[i];
for(j=i-1;j>=0;j--)

{
if(nextValue<tarArr[j])
tarArr[j+1]=tarArr[j];
else

{
break;
}
}
tarArr[j+1]=nextValue;
}
}
下面來介紹一下希爾排序:
希爾排序就是將要排序的數據先分成如果組,對每一組實行插入排序。
代碼如下:

int tarArr[]=
{10,1,35,12,7,17,66,6,56,26};
int size = sizeof(tarArr)/sizeof(tarArr[0]);

void shellSort(void)


{
int gap =0,i=0,j=0;
for(gap = size/2;gap>0;gap/=2)

{
for(i=gap;i<size;i+=gap)

{
int nextValue = tarArr[i];
for(j=i-gap;j>=0;j-=gap)

{
if(nextValue<tarArr[j])
tarArr[j+gap] = tarArr[j];
else

{
break;
}

}
tarArr[j+gap] = nextValue;
}
}
}