zoukankan      html  css  js  c++  java
  • 数据结构-希尔排序

    一. 介绍

    希尔排序是把记录按下标的一定增量分组, 对每组使用直接插入排序算法排序; 随着增量逐渐减少, 每组包含
    的关键词越来越多, 当增量减至 1 时, 整个文件恰被分成一组, 算法便终止

    二. 思路


    
    public class ShellSort {
        public static void main(String[] args) {
            int arr[] = {0, 8, 9, 1, 7, 2, 3, 5, 4, 6};
            shellSort(arr);
            System.out.println(Arrays.toString(arr));
        }
    
        private static void shellSort(int[] arr) {
            int temp = 0;
            for (int gap = arr.length / 2; gap > 0; gap /= 2) {
                for (int i = gap; i < arr.length; i++) {
                    for (int j = i - gap; j >= 0; j -= gap) {
                        if (arr[j] > arr[j + gap]) {
                            temp = arr[j + gap];
                            arr[j + gap] = arr[j];
                            arr[j] = temp;
                        }
                    }
                }
            }
    
    //        int temp = 0;
    //        for (int i = 5; i < arr.length; i++) {
    //            for (int j = i - 5; j >= 0; j -= 5) {
    //                if (arr[j] > arr[j + 5]) {
    //                    temp = arr[j + 5];
    //                    arr[j + 5] = arr[j];
    //                    arr[j] = temp;
    //                }
    //            }
    //        }
    //        System.out.println(Arrays.toString(arr));
    //        for (int i = 2; i < arr.length; i++) {
    //            for (int j = i - 2; j >= 0; j -= 2) {
    //                if (arr[j] > arr[j + 2]) {
    //                    temp = arr[j + 2];
    //                    arr[j + 2] = arr[j];
    //                    arr[j] = temp;
    //                }
    //            }
    //        }
    //        System.out.println(Arrays.toString(arr));
    //
    //        for (int i = 1; i < arr.length; i++) {
    //            for (int j = i - 1; j >= 0; j -= 2) {
    //                if (arr[j] > arr[j + 1]) {
    //                    temp = arr[j + 1];
    //                    arr[j + 1] = arr[j];
    //                    arr[j] = temp;
    //                }
    //            }
    //        }
    //        System.out.println(Arrays.toString(arr));
    
    
        }
    }
    
  • 相关阅读:
    8086汇编--1--通用寄存器和简单汇编指令
    写在前面的吐槽!
    汇编/Debug学习计划
    开篇-引文
    看懂别人的代码,和自己能写代码是两回事
    内存管理
    Flink基本原理及应用场景
    IDEA Maven Dependencies标红报错
    Spark Streaming流式处理
    Kafka
  • 原文地址:https://www.cnblogs.com/gcm688/p/14700563.html
Copyright © 2011-2022 走看看