基础篇-5.希尔排序-《Java学习知识库》

admin 2025-11-02 01:30:45 编程 来源:ZONE.CI 全球网 0 阅读模式
  • 要求
  • 算法描述
  • 算法实现
  • 参考资料

    要求

    • 能够用自己语言描述希尔排序算法

      算法描述

    1. 首先选取一个间隙序列,如 (n/2,n/4 … 1),n 为数组长度
    2. 每一轮将间隙相等的元素视为一组,对组内元素进行插入排序,目的有二① 少量元素插入排序速度很快② 让组内值较大的元素更快地移动到后方
    3. 当间隙逐渐减少,直至为 1 时,即可完成排序

      算法实现

      1. private static void shell(int[] a) {
      2. int n = a.length;
      3. for (int gap = n / 2; gap > 0; gap /= 2) {
      4. // i 代表待插入元素的索引
      5. for (int i = gap; i < n; i++) {
      6. int t = a[i]; // 代表待插入的元素值
      7. int j = i;
      8. while (j >= gap) {
      9. // 每次与上一个间隙为 gap 的元素进行插入排序
      10. if (t < a[j - gap]) { // j-gap 是上一个元素索引,如果 > t,后移
      11. a[j] = a[j - gap];
      12. j -= gap;
      13. } else { // 如果 j-1 已经 <= t, 则 j 就是插入位置
      14. break;
      15. }
      16. }
      17. a[j] = t;
      18. System.out.println(Arrays.toString(a) + " gap:" + gap);
      19. }
      20. }
      21. }

      参考资料

    • https://en.wikipedia.org/wiki/Shellsort

    插入排序的变形

    以太坊cppgolang区别 编程

    以太坊cppgolang区别

    以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
    progolang 编程

    progolang

    Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
    golangn个发送者 编程

    golangn个发送者

    Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
    golang技能图谱 编程

    golang技能图谱

    从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
    评论:0   参与:  10