用从命令行输入整数数据的方式,写一个整数的排序算法。 15
用从命令行输入整数数据的方式,写一个整数的排序算法。要求:1至少三种排序算法,使用命令行第一个参数切换。2显示排序后的结果,并显示排序操作所消耗的时间(毫秒数),比较次数...
用从命令行输入整数数据的方式,写一个整数的排序算法。
要求:1 至少三种排序算法,使用命令行第一个参数切换。
2 显示排序后的结果,并显示排序操作所消耗的时间(毫秒数),比较次数,交换次数,移动次数。
字符串转化为整数的可以使用Integer.parseInt(String s)进行
时间计数可使用java.util包中的pubic long Date.currentTimeMillis()返回一个从1970年1月1日零时到目前时刻所走过的毫秒数来计算。
请问这个怎么做?
用不了噢。 展开
要求:1 至少三种排序算法,使用命令行第一个参数切换。
2 显示排序后的结果,并显示排序操作所消耗的时间(毫秒数),比较次数,交换次数,移动次数。
字符串转化为整数的可以使用Integer.parseInt(String s)进行
时间计数可使用java.util包中的pubic long Date.currentTimeMillis()返回一个从1970年1月1日零时到目前时刻所走过的毫秒数来计算。
请问这个怎么做?
用不了噢。 展开
1个回答
展开全部
//用从命令行输入数据的方式,写一个整数的排序算法。
//提示:字符串转化为整数的可以使用Integer.parseInt(String s)进行
import java.util.*;
public class st3
{
public static void main(String args[])
{
int t,a,b,i,x=0;
int y=0,y2=0;
int n;
int m;
n=args.length;
int[] c=new int[n];
for(i=0;i<n;i++)
c[i]=Integer.parseInt(args[i]);
x=c[0];
long start=0,end=0,T=0;
start=System.currentTimeMillis();
switch (x)
{
case 1: //冒泡排序法
for(a=1;a<n;a++)//数组是从0到N-1的,不能为N,否则出现越界
for(b=a+1;b<n;b++)
if(c[a]>c[b]){t=c[a];c[a]=c[b];c[b]=t;y++;y2=3*y;}
break;
case 2: //直接插入排序
for(a=2;a<n;a++)
{ m=c[a];
b=a-1;
while(m<c[b])
{c[b+1]=c[b--];y++;}
c[b+1]=m;
}
y2=3*y;
break;
case 3:
for(a=1;a<n;a++)
{
b=a;
for(i=a+1;i<n;i++)
if(c[i]<c[b])
b=i;
if(b!=a)
{m=c[a];c[a]=c[b];c[b]=m;y++;y2=3*y;}
}
break;
}
end=System.currentTimeMillis();
T=end-start;
for(i=1;i<n;i++)
System.out.print(c[i]+" ");
System.out.println(" ");
System.out.println("时间是"+" "+T);
System.out.println("排序交换次数"+" "+y);
System.out.print("排序移动次数"+" "+y2);
}
}
//提示:字符串转化为整数的可以使用Integer.parseInt(String s)进行
import java.util.*;
public class st3
{
public static void main(String args[])
{
int t,a,b,i,x=0;
int y=0,y2=0;
int n;
int m;
n=args.length;
int[] c=new int[n];
for(i=0;i<n;i++)
c[i]=Integer.parseInt(args[i]);
x=c[0];
long start=0,end=0,T=0;
start=System.currentTimeMillis();
switch (x)
{
case 1: //冒泡排序法
for(a=1;a<n;a++)//数组是从0到N-1的,不能为N,否则出现越界
for(b=a+1;b<n;b++)
if(c[a]>c[b]){t=c[a];c[a]=c[b];c[b]=t;y++;y2=3*y;}
break;
case 2: //直接插入排序
for(a=2;a<n;a++)
{ m=c[a];
b=a-1;
while(m<c[b])
{c[b+1]=c[b--];y++;}
c[b+1]=m;
}
y2=3*y;
break;
case 3:
for(a=1;a<n;a++)
{
b=a;
for(i=a+1;i<n;i++)
if(c[i]<c[b])
b=i;
if(b!=a)
{m=c[a];c[a]=c[b];c[b]=m;y++;y2=3*y;}
}
break;
}
end=System.currentTimeMillis();
T=end-start;
for(i=1;i<n;i++)
System.out.print(c[i]+" ");
System.out.println(" ");
System.out.println("时间是"+" "+T);
System.out.println("排序交换次数"+" "+y);
System.out.print("排序移动次数"+" "+y2);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询