利用Java进行希尔排序(元素中有0会有问题),步长经过调试length/2+1最合适。

 import java.util.Scanner;

 public class HierSort {
private static int array[] = new int[100000]; private static void setArray(int length){
Scanner scanner = new Scanner(System.in);
System.out.println("Please entry Array elements:");
for (int i = 0; i < length; i++) {
int num = scanner.nextInt();
array[i] = num;
}
} private static void show(int length){
System.out.println("Output this array:");
for (int i = 0; i < length; i++) {
System.out.print(array[i] + " ");
}
} private static void Hier(int length){
// define a flag as this HieSort of path
int flag;
flag = length / 2 + 1;
while (flag > 0){
for (int i = 0; i < length; i++) {
// judge of edge because the length less than the length of array
if (array[i] > array[i+flag] && array[i+flag] != array[length]){
int swap;
swap = array[i+flag];
array[i+flag] = array[i];
array[i] = swap;
}
}
// System.out.println(flag);
// sub this flag util the f lag equals one
flag--;
}
} public static void main(String[] args){
int length;
Scanner scanner = new Scanner(System.in);
System.out.println("Please the length of array(0<x<10000):");
length = scanner.nextInt();
setArray(length);
Hier(length);
show(length);
}
}

HierSort(希尔)————Java的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 希尔排序(java)

    时间复杂度为O( n^(3/2) )不是一个稳定的排序算法 如何看一个算法是否稳定:{("scala",12),("python",34),("c++ ...

  3. 希尔排序及希尔排序java代码

    原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0.4.8这个三个位置的数据进行插入排序,然后向右移一位对位置1.5.9进行插入排序 ...

  4. java实现的排序(插入/希尔/归并)

    java实现三种简单的排序,以下是代码: /*插入排序*/ public static void insertionSort(int[] a) { int j; for(int p = 1; p &l ...

  5. Java实现希尔排序(增量递减排序)

    package Insert.sort; import java.util.Scanner; /*又叫缩小增量排序,本质是插入排序,将待排的序列增量分成几个子序列,分别对每个子序列进行直接插入排序 * ...

  6. Java实现希尔排序

            华杰让我看了一道面试题:现有一段程序S,可以对任意n个数进行排序.如果现在需要对n^2个数进行排序,最少需要调用S多少次?(只允许调用S,不可以做别的操作).         看到了这 ...

  7. 希尔排序java

    希尔排序简述 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率.(希尔排序先将部分数据进行排序,相当于已经部分排好序) ...

  8. 希尔排序----java实现

    思路:希尔排序是分组基础上的直接插入排序,给定的一个步长数组,每个小组先直接插入排序.虽然有四次循环,但是每次循环次数少. package com.sheepmu.text; import java. ...

  9. Java排序算法之希尔(Shell)排序

    基本思想: 希尔排序就是对直接插入排序的一个优化.现在有一个array,希尔排序就是设定一个增量incrementNum(0<incrementNum<array.length).先从ar ...

随机推荐

  1. 生成二维码的JAVA

    不多说,上代码 package tcc; import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.Buffered ...

  2. RockerMQ介绍 及搭建双master模式

    一.RocketMQ介绍 1.1 简介 RocketMQ 是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机 ...

  3. [剑指Offer]23-链表中环的入口节点

    题目链接 https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4?tpId=13&tqId=11208&t ...

  4. [剑指Offer]39-数组中出现次数超过一半的数字(快排延申,找第k大数同理)

    题目链接 https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=13&tqId=11181&t ...

  5. cloud server ribbon 自定义策略配置

    虽然ribbon默认为我们提供了多钟负载均衡策略,但有时候我们仍然需要自定义符合自身业务逻辑的规则 使用配置文件的方式:我们只需要在配置文件中添加配置 serviceId.ribbon.NFLoadB ...

  6. (八) .launch文件 ---编写简单的启动脚本文件

    下面我们将介绍,如何编写一个启动脚本程序:(.launch文件) 还记得我们在 创建ROS软件包教程 中创建的第一个程序包(beginner_tutorials)吗,现在我们要使用它. 在 begin ...

  7. Bundle Adjustment---即最小化重投影误差(高翔slam---第七讲)

    一.历史由来 Adjustment computation最早是由geodesy的人搞出来的.19世纪中期的时候,geodetics的学者就开始研究large scale triangulations ...

  8. admin 的流程 Xadmin

    提交根评论 显示根评论 --- render显示 --- ajax显示 提交子评论 显示子评论 ---- render显示 ---- Ajax显示(扩展) 评论树 博客:富文本编辑器 beautful ...

  9. c# txt内存映射技术总结

    对于大文件操作,readline 的方式读取文档,那操作起来跟蜗牛爬一样的慢了, 于是使用内存映射技术, 参考微软的这个使用方法说明 https://msdn.microsoft.com/zh-cn/ ...

  10. 扩展、委托、Lambda、linq

    1.扩展 扩展是一个很有用的功能.如果你有一个类.不能修改,同时你又想给他加一个方法.这个过程就是扩展.扩展就是扩展方法. 例1: 类People public class People { publ ...