直接插入排序&&冒泡排序&&希尔排序(缩小增量排序)源码

public class DirectRank {

public static void main(String[] args) {

DirectRank aa=new DirectRank();

try {

aa.judge(args);

} catch (TestDefinException e2) {

e2.printStackTrace();

}

Integer[] a=new Integer[args.length];

try{for(int i=0;i<args.length;i++)

{System.out.print(args[i]+" ");

a[i]=a[i].parseInt(args[i]);//将读入的String类型转化为Intgr

}

System.out.println();

}

catch(NumberFormatException e)

{System.out.println(" \n输入数据有误\n");}

catch(NullPointerException e1)

{e1.getMessage();}

aa.Rank(a); 

System.out.println("直接排序结果");

     for(int j=0;j<a.length;j++)

   System.out.print(a[j]+"* ");

    aa.mopao(a);

    System.out.println("\n冒泡排序");

    for(int j=0;j<a.length;j++)

   System.out.print(a[j]+"# ");

}


      

/*

 * 直接插入排序

 */

void Rank(Integer[]a){

for(int i=1;i<a.length;i++)//从第二个元素开始插入

{

int temp=a[i];//设置一个暂存变量

int j=i-1;//确定要比较的元素

while(j>=0&&temp<a[j])//这里注意一定要先比较j>0否则会报数组越界的异常Array Indx out of Bound Exception

{a[j+1]=a[j];//数据右移

j--;//向左移继续下个元素比较

}

a[j+1]=temp;//将比较的元素插入合适的位置

}

}

void judge(String[]args)throws TestDefinException{

if(args.length<=0)

throw new TestDefinException("请输入数据!");

}

/*

 * 冒泡排序

 */

void mopao(Integer []a){

for(int i=0;i<a.length-1;i++)

{for(int j=1;j<a.length-i;j++)

{

if(a[j]<a[j-1]) 

{int temp=a[j-1];

a[j-1]=a[j];

a[j]=temp;

}

}

}

}

}

public class XiErRank {

public static void main(String[] args) {

int s[]={49,38,65,97,76,13,27,49,78,34,12,64,1};

XiErRank x=new XiErRank();

x.shsort(s);

    for(int a=0;a<s.length;a++)

{

System.out.println("\t["+s[a]+"]");

}

}

public void shsort(int s[]){

int d=s.length/2;//确定步长

while(d>=1)

{for(int i=d;i<s.length;i++)//从第d个元素开始比较

{

int temp=s[i];//设置一个暂存变量

int j=i-d;//左移d

while(j>=0&&s[j]>temp)

s[j+d]=s[j];//数据右移

   j=j-d;//继续向左比较

   }

s[j+d]=temp;//插入确定的位置

 

}

d=d/2;

}

}


}



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。