欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构与算法 ---- 希尔排序

程序员文章站 2022-06-04 12:50:40
...

希尔排序和折半插入排序都是对直接插入排序的改进

折半插入排序:https://blog.csdn.net/qq_41877840/article/details/109227231

希尔排序过程:
数据结构与算法 ---- 希尔排序

#include <stdio.h>
void ShellSort(int a[], int n);

int main()
{
	int i;
	int a[10] = {2,6,2,9,4,20,18,7,1,5};	
	ShellSort(a,10);
	for(i=0; i<10; i++)
		printf("%d ",a[i]);
		
	return 0;
}

void ShellSort(int a[], int n)
{
	for(int d=n/2; d>=1; d=d/2){
		for(int i=d; i<n; i++){
			if(a[i]<a[i-d]){
				int j = i;
				int temp = a[j];
				while(temp<a[j-d] && j-d>=0){//将数组后移 
					a[j] = a[j-d];
					j -= d;
				}
				a[j] = temp;//后移之后插入 
			}
		}
	}
}