题8

题目

Q:希尔排序属于 ( ) .
A. 插入排序 B. 交换排序 C. 选择排序 D. 归并排序

分析

A:还是以完全逆序这种情况作为直接插入排序的思考模型
当处理逆序序列的时候,是最坏的结果,也就是需要一一比较,比较到最后面去
为了解决这种,一路要比到最后的这种局面,通过划分子序列,把每个子问题内部的问题规模缩小,使得,那么内部是完全逆序的,也不至于比较得非常长
直接插入排序在面对基本有序的序列时效率很高,但如果序列是高度无序的,它就需要进行大量的比较和移动操作,效率很低。而希尔排序就是为了解决这个问题,它试图通过分组来先从“粗略” 的排序开始,逐步细化排序,以提升效率。
希尔排序分组的原则:

  1. 减少比较次数: 通过分组,希尔排序可以先对间隔较大的子序列进行排序,这使得元素之间的比较次数大大减少。例如,增量为 5, 只有相隔 5 个位置的元素才会被比较,而直接插入排序则需要比较所有相邻元素。
  2. 快速接近基本有序: 虽然子序列内的排序只是一种“粗略” 的排序,但它可以快速地将序列变成一种基本有序的状态。这种基本有序状态可以理解为,距离较远的元素已经大体上排好序了,而插入排序擅长处理基本有序的序列。
  3. 逐步细化排序: 随着增量的不断减小,子序列的范围也越来越小,最终变为整个序列。在这个过程中,插入排序的范围逐渐缩小,效率越来越高。
    举个例子:
    想象你在一个乱糟糟的房间里,想要把所有的东西都归置到相应的区域。你会怎么做呢?
  • 直接插入排序: 你可能会先从一个角落开始,把所有东西一个一个地移动到正确的位置,效率非常低。
  • 希尔排序: 你可能会先把房间分成几个区域,然后每个区域里的东西先进行粗略的分类,比如把衣服放在一起、书籍放在一起,然后再逐渐细化分类,最后每个区域都完全有序。这样你就更快速地整理了整个房间。

A
希尔排序是对直接插入排序算法改进后提出来的, 本质上仍属于插入排序的范畴。