希尔Shell Sort排序算法实现机器性能分析(C语言)

Posted bfhonor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔Shell Sort排序算法实现机器性能分析(C语言)相关的知识,希望对你有一定的参考价值。

一、 希尔排序(Shell Sort)

  • 希尔排序:先追求表中元素部分有序,再逐渐逼近全局有序
  • 希尔排序:先将待排序表分割成若干形如 L[i, i + d, i + 2d,…, i + kd] 的“特殊”子表,对各个子表分别进行直接插入排序。缩小增量d,重复上述过程,直到d=1为止。

(一)希尔排序

1. 增量d=4的希尔排序

  • 希尔排序,第一趟:



  • 希尔排序,第二趟:


  • 希尔排序,第三趟:

  • 希尔排序整体步骤:

2. 增量d=4的希尔排序




(二)算法实现






















//希尔排序
void ShellSort(int A[], int n){
	int d,i,j;
	//A[0]只是暂存单元,不是哨兵,当j<=0时,插入位置已到
	for(d=n/2 ; d>=1 ; d=d/2){	//步长变化
		for(i=d+1 ; i<=n ; ++i){
			if(A[i]<A[i-d]){	//需要将A[i]插入有序增量子表
				A[0]=A[i];		//暂存在A[0]
				for(j=i-d ; j>0&&A[0]<A[j] ; j-=d){
					A[j+d]=A[j];//记录后移,查找插入的位置
				}
				A[j+d]=A[0];	//插入
			}
		}
	}
}

(三)算法时间复杂度

(四)算法性能分析

  • 适用性:仅适用于顺序表,不适用于链表

以上是关于希尔Shell Sort排序算法实现机器性能分析(C语言)的主要内容,如果未能解决你的问题,请参考以下文章

排序算法--Insert Sorting--插入排序[3]--Shell Sort--希尔排序

排序算法:Shell Sort 希尔排序

Java学习笔记——排序算法之希尔排序(Shell Sort)

python 学习笔记 -- 数据结构与算法 希尔排序 Shell Sort

八大排序算法之二希尔排序(Shell`s Sort)

排序算法四:希尔排序(Shell Sort)