void insertSort(int array[], int len)
{
int key, j;
for (int i = 1; i < len; i++)
{
key = array[i]; //要插入的元素
j = i-1;//已经有序末尾元素索引
while(j >=0 && key < array[j])//找到合适位置
{
array[j] = array[j+1];//移动元素腾出位置
j--;
}
array[j+1] = key;//插入到腾出位置处
}
}
//希尔排序师插入排序的改进
void shellSort(int array[], int len)
{
int gap, i, j;
int key;
for (gap = len >> 1; gap > 0; gap >>= 1)
{
for (i = gap; i < len; i++)
{
key = array[i];
j = i - gap;
while(j >=0 && key < array[j])
{
array[j] = array[j+gap];//移动元素腾出位置
j -= gap;
}
array[j+gap] = key;//插入到腾出位置处
}
}
}
插入排序(插入和希尔排序)
最新推荐文章于 2024-01-12 16:18:10 发布