六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 22|回复: 0

java插入排序和希尔排序

[复制链接]

升级  62%

7

主题

7

主题

7

主题

童生

Rank: 1

积分
31
 楼主| 发表于 2013-2-3 11:23:36 | 显示全部楼层 |阅读模式
今天看了下 排序 写的不好 主要写插入和希尔排序 ,我的理解插入排序就是希尔排序增量为1的特殊希尔排序,希尔排序是为了解决插入排序中的数组移动次数太多
import java.util.Arrays;public class StraightSort {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint a[] = {2,5,24,3,1,15};//System.out.println(Arrays.toString(sort(a)));System.out.println(Arrays.toString(sort2(a,a.length/2)));}/** * 插入排序   直接插入排序 Straight insertion Sort  的基本操作是将记录插入到已经排好的有序表中,从而得到一个新的,记录数增1的有序表 * @param array * @return */public static int[] sort(int array[]){if(array==null)return array;int temp ; //用于存储插入值for(int i = 1 ; i <array.length ; i++){if(array<array[i-1]){temp = array;int j = i-1;for(;j>-1&&array[j]>temp;j--){array[j+1] = array[j];}array[j+1] = temp;}}return array;}/** * 希尔排序   将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入 *排序后得到的结果是基本有序而不是局部有序。 *   ----------插入排序实际就是希尔排序 的自增变量开始为1的特殊希尔排序 **/public static int[] sort2(int array[],int increment){//int increment = array.length/2;int temp;while(increment>=1){for(int i = increment;i<array.length;i++){if(array<array[i-increment]){temp = array;int j = i-increment;for(;j>-1&&array[j]>temp;j= j - increment){array[j+increment] = array[j];}array[j+increment] = temp;}}increment = increment/2;}return array;}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表