排序算法---希尔排序

来源:互联网 发布:mysql联表删除 编辑:程序博客网 时间:2024/05/20 06:08

  希尔排序的基本思想(划分):把待排序的数列按照一定的增量分割成多个子数列,这些子数列不是连续的,然后对每个子数列进行插入排序。接着增量逐渐减小,在减小到1后直接使用插入排序处理数列。

  希尔排序的具体例子如下(每次n/2缩小规模):

   

 


希尔排序的实现代码如下:

package com.threeTop.www;/*** * 希尔排序的实现 * @author wjgs * */public class ShellSort {private int[]array;//构造函数进行初始化public ShellSort(int []array){this.array=array;}/*** * 希尔排序,每次以n/2减少规模 */    public void sort()    {    int temp;        for(int k=array.length/2;k>0;k/=2)    {    for(int i=k;i<array.length;i++)    {    for(int j=i;j>=k;j-=k)//内部控制元素的交换    {    if(array[j-k]>array[j])    {    temp=array[j-k];    array[j-k]=array[j];    array[j]=temp;    }    }    }        }            }//打印输出public void print(){for(int i=0;i<array.length;i++){System.out.print(array[i]+"  ");}}public static void main(String[] args) {// TODO Auto-generated method stubint []array={5,9,1,9,5,3,7,6,1,10,4};ShellSort shellsort=new ShellSort(array);shellsort.sort();shellsort.print();}}

  

0 0
原创粉丝点击