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));
    
    
        }
    }
    
  • 相关阅读:
    SQL数据库——存储过程
    常用命令
    八大排序算法
    Java 反射的理解
    Java 集合的理解(持续更新......)
    JAVA 用数组实现 ArrayList
    JVM 运行时的内存分配
    Java中的增强 for 循环 foreach
    Java 泛型
    《七》随机访问文件流
  • 原文地址:https://www.cnblogs.com/gcm688/p/14700563.html
Copyright © 2011-2022 走看看