直接插入排序&&冒泡排序&&希尔排序(缩小增量排序)源码
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;
}
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。