Java实现插入,shell排序
2016-05-03 21:20
387 查看
利用Java实现插入排序和希尔排序
首选简绍一下这两种排序算法的思想。插入排序的总体思路就是从未排序的序列中每次查找一个元素和已经排好顺序的序列中的数据进行比较大小,然后进行插入操作。具体实现就是,将一个待排序的值先存放在临时变量里面,然后遍历已经有序的序列,进行比较,找到合适位置将待插入值插入即可。代码实现如下:
public void insertSort(){
//待排序的数组
int[] arrs = {23,43,56,42,65,72,13,35,57,74,29};
//存放待插入的值
int temp = 0;
for(int i=1;i<arrs.length;i++){
temp = arrs[i];
int j=i-1;
//比较带插入值与已经有序的序列中的值大小关系
for(;j>=0&&temp<arrs[j];j--){
arrs[j+1] = arrs[j];
}
arrs[j+1] = temp;
}
//对排序后的数组输出
for(int i=0;i<arrs.length;i++){
System.out.print(arrs[i]+" ");
}
}
希尔排序的总体思路:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。具体代码实现如下:
public void shellSort(int[] arrs){
while(true){
//确定间距大小,一般以数组的总长度的一半为间隔开始
int d = (int) Math.ceil(arrs.length/2);
int temp = 0;
for(int i=0;i<d;i++){
for(int j=i+d;j<arrs.length;j+=d){
int x = j-d;
temp = arrs[j];
for(;x>=0&&temp<arrs[x];x-=d){
arrs[x+d] = arrs[x];
}
arrs[x+d] = temp;
}
}
if(d == 1){
break;
}
}
}
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- 插入排序
- Linux Shell常用技巧
- Shell 脚本编程陷阱
- shell字符串操作详解
- Shell中删除某些文件外所有文件的3个方法
- Ruby中执行Linux shell命令的六种方法详解
- VB使用shell函数打开外部exe程序的实现方法
- Shell编程的一些知识集合
- Shell中的for和while循环详细总结
- 什么是Shell?Shell脚本基础知识详细介绍
- Shell脚本中引用、调用另一个脚本文件的2种方法
- Shell脚本解压rpm软件包
- Linux Shell 数组建立及使用技巧
- Shell脚本实现复制文件到多台服务器的代码分享
- Shell脚本实现批量替换文件内容
- Shell脚本实现的一个简易Web服务器例子分享