算法-java代码实现希尔排序】的更多相关文章

希尔排序 第8节 希尔排序练习题 对于一个int数组,请编写一个希尔排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素小于等于2000. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (javac 1.7) 代码自动补全           1 import java.util.*; 2 3 public class ShellSort { 4 public int[] shellSort(int[] A, int n…
计数排序   第10节 计数排序练习题 对于一个int数组,请编写一个计数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (javac 1.7) 代码自动补全           1 import java.util.*; 2 3 public class CountingSort { 4 public int[] countingSort(int[] A, int n) {…
希尔排序严格来说是基于插入排序的思想,又被称为缩小增量排序. 具体流程如下: 1.将包含n个元素的数组,分成n/2个数组序列,第一个数据和第n/2+1个数据为一对... 2.对每对数据进行比较和交换,排好顺序: 3.然后分成n/4个数组序列,再次排序: 4.不断重复以上过程,随着序列减少并直至为1,排序完成.      假如有初始数据:25  11  45  26  12  78. 1.第一轮排序,将该数组分成 6/2=3 个数组序列,第1个数据和第4个数据为一对,第2个数据和第5个数据为一对,…
算法描述:先将待排序序列的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序”后,再对所有元素进行一次直接插入排序. package sorting; /** * 希尔排序 * 平均O(nlogn),最坏O(nlogn);空间复杂度O(1);不稳定;较复杂 * @author zeng * */ public class ShellSort { public static void shellSort(int[] a) {…
Java排序算法(四)希尔排序2 希尔排序移步法:分组+直接插入排序组合 一.测试类SortTest import java.util.Arrays; public class SortTest { private static final int L = 20; public static void main(String[] args) { int [] arr = new int[6]; for (int i = 0; i < arr.length; i++) { arr[i] = (in…
代码(部分为别人代码): 1.希尔排序(ShellSort) /* * 希尔排序:先取一个小于n的整数d1作为第一个增量, * 把文件的全部记录分成(n除以d1)个组.所有距离为d1的倍数的记录放在同一个组中. * 先在各组内进行直接插入排序:然后,取第二个增量d2<d1重复上述的分组和排序, * 直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止. */ public class ShellSort { public sta…
因为希尔排序的核心思想是插入排序,所以本篇将两篇排序一起记录 本篇内容: 插入排序 希尔排序 (一)插入排序 算法思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素: 排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的有序表,重复n-1次完成整个排序过程. 代码实现: (注意:ArrayBase在第一篇中已给出代码) /** * */ package com.cherish.SortingAlgorithm; /** *…
今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内部排序算法: 类别 名称 时间复杂度(默认最坏情况) 空间复杂度 稳定性 备注 插入排序 直接插入排序  O(n^2)  O(1) 稳定   插入排序 希尔排序  最坏O(n^2),平均O(n^1.3)  O(1) 不稳定    交换排序 冒泡排序  O(n^2)  O(1) 稳定    交换排序…
以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使用 交换数组中两数位置 的操作,另外,为了方便我打印数组查看结果,我封装一个 ArrayBase.java基类,用来实现swap方法和printArray方法: 选择排序算法 (一)ArrayBase.java /** * */ package com.cherish.SortingAlgorith…