希尔排序

第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) {
5
        int i, step; //i标识每一组,step标识步长
6
        for(step = n / 2; step > 0; step /= 2){ //起始的步长为数组长度的一半
7
            for(i = step; i < n; i++){ //当前步长为step,开始插入排序
8
                if(A[i] < A[i-step]){ //每个元素与自己组内的数据进行直接插入排序 
9
                    int target = A[i];
10
                    int j = i; //j指示当前这一组遍历到哪一个元素
11
                    while(j>0 && A[j-step] > target){
12
                        A[j] = A[j-step]; //将j-step位置上的元素移到位置j
13
                        j -= step;
14
                        if(j-step < 0)//如果j=1,step=3,没有这个if的话,就会数组越界
15
                            break;
16
                    }
17
                    A[j] = target;
18
                }
19
            }
20
        }
21
        return A;
22
    }
23
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
 

最新文章

  1. [WCF编程]13.并发:服务并发模式
  2. 【转】How to hire——创业公司应该如何招人
  3. mysql 常用查询
  4. 高性能JS笔记1——加载执行
  5. [Angular 2] Nesting Elements in Angular 2 Components with ng-content (AKA Angular 2 Transclusion)
  6. hdoj 2829 Lawrence 四边形不等式优化dp
  7. winform 项目获取app.config 中appSettings节点数据
  8. 每天一个JavaScript实例-递归实现反转数组字符串
  9. LatinIME输入法分析
  10. ReactJS.NET
  11. SpringMVC轻松学习-注解的使用(三)
  12. IIS 挂载android的apk文件进行下载
  13. JAVA多线程---ThreadLocal&lt;E&gt;
  14. UML总结复习指南
  15. CSS颜色渐变
  16. Nginx的负载均衡 - 最少连接 (least_conn)
  17. RedHat系列软件管理(第二版) --二进制软件包管理
  18. BootStrapTable获取选中数据值并传参至父页面
  19. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
  20. (转)cookie和session的区别

热门文章

  1. 保存html上传文件过程中遇到的字节流和字符流问题总结
  2. Sql 的 RAISERROR用法
  3. Android动画(二)-属性动画
  4. vue2 递归组件--树形
  5. HTML5本地存储应用sessionStorage和localStorage
  6. 解决ios微信页面回退不刷新的问题
  7. 解决 iPhone 微信 H5 无法自动播放音乐问题
  8. Java学习笔记2(输入与随机数简单介绍)
  9. islider结合react的简单实用
  10. java_web学习(九) PreparedStatement动态参数的引入