手撕希尔排序

一、学习要点:
1.核心思想插入排序对小而有序的数组具有很快的排序效率;
2.对数组进行不断分组排序,充分利用插入排序的优势;
二、代码实现:

#include
#include
using namespace std;
void shell_sort(int a[],int n)
{
	int gap=n/2,i,j,k;
	for(gap;gap>=1;gap/=2)
	{
		for(i=gap;i0;j-=gap)
			{
				if(a[j]j;k-=gap)
				{
					a[k+gap]=a[k];
				}
				a[j+gap]=temp;
			}
		}
	}
}
int main()
{
	int a[20]={5,6,8,3,2,4,1,7,9,10,11,19,12,18,13,17,14,16,15,30};
	shell_sort(a,20);
	for(int i=0;i<20;i++)
	{
		cout<

三、运行结果:
手撕希尔排序_第1张图片

你可能感兴趣的:(C++学,希尔排序)