JAVA实现排序算法(三):希尔排序
来源:互联网 发布:爱情电影推荐知乎 编辑:程序博客网 时间:2024/06/06 00:04
JAVA实现排序算法(三):希尔排序
希尔排序
希尔排序的介绍如图:
代码如下
package com.lx.sort;import java.util.Arrays;import java.util.Scanner;/** * @ProjectName: [MyAlgorithm] * @Package: [com.lx.sort] * @ClassName: [Example] * @Description: [排序] * @Author: [刘翔] * @CreateDate: [2017年11月12日 下午9:00:14] * @UpdateUser: [刘翔] * @UpdateDate: [2017年11月12日 下午9:00:14] * @UpdateRemark: [说明本次修改内容] * @Version: [v1.0] * */ public class Sort { /** * @param @param args * @Description: TODO(希尔排序) */ public static String[] ShellSort(String[] a) { int N = a.length; int h = 1; while (h < N / 3) { //设定步长1.4.13.40.。。。。 h = 3 * h + 1; } while (h >= 1) { //将数组变成h有序 for (int i = h; i < N; i++) { for (int j = i; j >= h && less(a[j], a[j - h]); j = j - h) { exch(a, j, j - h); } h = h / 3; } } return a; /** * @Description: TODO(判断v是否比w小) * @param @param args */ private static boolean less(String v,String w) { return v.compareTo(w) < 0; } /** * @Description: TODO(交换字符i和j的位置) * @param @param args */ private static void exch(String[] a,int i,int j) { String t = a[i]; a[i] = a[j]; a[j] = t; } /** * @Description: TODO(用于打印当前序列) * @param @param args */ public static void show(String[] a) { for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); } /** * @Description: TODO(用于测试字符序列a[]是否有序) * @param @param args */ public static boolean isSorted(String[] a) { for (int i = 1; i < a.length; i++) { if (less(a[i],a[i-1])) { return false; } } return true; } /** * @Title: main * @Description: TODO(用于测试从键盘录入的一列字符是否有序) * @param @param args */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入要排序的字符序列,输入的字符序列格式为1,2,3...9"); String str = sc.nextLine(); String[] info = str.split(","); System.out.println("当前序列的顺序是:"); show(info); System.out.println("对当前序列进行排序"); //SelectSort(info); //InsertSort(info); //SelectSort(info); //MergeSort(info); MergeBUSort(info); System.out.println("现在序列的排序是:"); show(info); if (isSorted(info)) { System.out.println("序列已经成功的进行了排序"); } else { System.out.println("序列排序失败"); } } }
运行结果如下
阅读全文
0 0
- JAVA实现排序算法(三):希尔排序
- 简单排序Java实现(三):希尔排序,堆排序
- java实现希尔排序算法
- java实现希尔排序算法
- java希尔排序算法实现
- 【排序算法】希尔排序(java实现)
- java实现简单排序算法:希尔排序
- 排序算法之希尔排序 java实现
- 排序算法之希尔排序(java实现)
- 排序算法(四):JAVA实现希尔排序
- 排序算法三 希尔排序
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- 排序算法(C实现)------- 希尔排序
- 经典算法之希尔排序(三种实现)
- 排序算法--希尔排序(JAVA)
- Java排序算法--希尔排序(Shellsort)
- 实现希尔排序算法。
- Java实现选择排序、插入排序、希尔排序算法
- JAVA实现排序算法(二):两种归并排序
- Java反射机制详解
- 函数的调用过程,栈帧的创建和销毁
- 深度学习总结(三)——学习率设置
- [转载]2016最流行的Android组件、工具、框架大全
- JAVA实现排序算法(三):希尔排序
- 获取当前日期时间
- 【Scikit-Learn 中文文档】监督学习:从高维观察预测输出变量
- 数据结构实验之图论九:最小生成树
- _NSFC... 类型错误
- Jdbc工具类
- 如何用 CSS 网格快速做出网站原型
- Bitmap 的图片加载
- 一对一和一对多的关联查询(该实体类中存在实体类属性和实体类集合属性,将关联的实体类详细信息查询出来,但没有查询所有该实体类信息)