首页 > 编程语言 > 详细

算法是个什么玩意儿-希尔排序

时间:2015-03-24 19:40:48      阅读:179      评论:0      收藏:0      [点我收藏+]

 希尔排序 其实是对 插入排序的一种优化,

 把一个数组  按照一个量分成几个小组,对规则下 若干个下标 上的元素值进行排序,逐渐缩小增量,

 再排序,最后增量为1,就是一步插入排序

import java.util.Arrays;

public class Array {

 // 把11个数的数组,分成三组

 static void group(){

     //0 5 10; 1 6 ; 2 7 ; 3 8 ;4 9 

     int [] ia = {49, 38, 65, 97, 26, 13, 27, 49, 55, 4,11};

     // 把数组分成三组 

     int gap = ia.length/2;   

           int count = 0;

           while(count<gap){

           int i  = count;

           while(i<ia.length){ 

           System.out.println(ia[i]);

           i = i+gap;

            }

          count++;

           }

 }

 // 希尔排序

 static void shellSort(){

   int [] ia = {49, 38, 65, 97, 26, 13, 27, 49, 55, 4,11};

   System.out.println("原始数据:"+ Arrays.toString(ia));

       // 把数组分成三组 

   int gap = ia.length/2;

       // 0 5 10; 1 6 ; 2 7 ; 3 8 ;4 9 

         int count = 0;

         while (gap>=1) {

           while(count<gap) {

               int original =  count+gap; // 表示从每组的哪个下标开始进行插入排序 ,即从                                       // 每组第二个下标开始的 5,6,7,8,8,9开始进行插入排序

               while(original<ia.length) {

                int current = original; // current 当前要 进行插入排序的元素的下标

                int previous  = original-gap;

              

                while(previous>=0 && (ia[previous]>ia[current])) {

                //  if() {

                    int temp ;

                    temp = ia[previous];

                    ia[previous] = ia[current] ;

                    ia[current] = temp;

                    current = current-gap;

                    previous = previous-gap;
                             
                  // }

                }

                original = original+gap;

                  } //original<ia.length while end

                  count++;

              }

              System.out.println(Arrays.toString(ia)); //打印每趟循环后的元素变化

              gap = gap/2;

              count = 0;

         }    

          System.out.println("排好序的数据"+Arrays.toString(ia)); 

 }

 

 /**

  * @param args

  */

 public static void main(String[] args) {

   shellSort();

本文出自 “JAVA那些事儿” 博客,请务必保留此出处http://1027187712.blog.51cto.com/5509347/1623771

算法是个什么玩意儿-希尔排序

原文:http://1027187712.blog.51cto.com/5509347/1623771

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!