public class InsertionSort
{
public static int[] sort(int[] a,int changdu)
{
int[] temp=new int[changdu];
int i;
for(i=1;i<temp.length;i++)
{
temp[i-1]=move(a,i);
}
return temp;
}
private static int move(int[]a,int i)
{
int min=a[0];
int smallindex=0;
int index;
for(index=i;index<a.length;index++)
{
if(a[index]<min)
{
min=a[index];
smallindex=index;
}
}
for(int j=smallindex;j>0;j--)
{
a[j]=a[j-1];
}
a[i-1]=min;
min=a[i];
System.out.println(a[0]);
return a[i-1];
}
}输入: 1,6,4,8,3,4,7,0,9,2
显示的结果却是:0 0 0 0 0 0 0 0 0 0
{
public static int[] sort(int[] a,int changdu)
{
int[] temp=new int[changdu];
int i;
for(i=1;i<temp.length;i++)
{
temp[i-1]=move(a,i);
}
return temp;
}
private static int move(int[]a,int i)
{
int min=a[0];
int smallindex=0;
int index;
for(index=i;index<a.length;index++)
{
if(a[index]<min)
{
min=a[index];
smallindex=index;
}
}
for(int j=smallindex;j>0;j--)
{
a[j]=a[j-1];
}
a[i-1]=min;
min=a[i];
System.out.println(a[0]);
return a[i-1];
}
}输入: 1,6,4,8,3,4,7,0,9,2
显示的结果却是:0 0 0 0 0 0 0 0 0 0
解决方案 »
- 记事本的小点小问题,如何添加格式中字体格式和颜色有源代码
- 错误the type EWindow must implement the inherited abstract method itemlistener怎么解决?
- 怎样设计一个不断在旋转的动画?
- 庆祝升级三个绿裤衩,散分!(3日晚结贴)
- 字符窜中提取数字的方法
- 关于处理待审核FAQ的办法,请各位给出自认为有价值的待审核FAQ,包括所属子版!
- 快疯了,访问文件和数据库,帮帮我,散分了
- 编译通过后得到的东西和原文件不一样?
- 用Jbuilder6编译运行工程文件时出现Error #: 914 : unable to write to output directory怎么办?
- JBuilder5为什么在win2000下无法安装
- 组件技术意味着什么?
- 新人请教!怎样实现数组中的“回文”判断?
上面的那们说得没错。就是你把!!!你的循环中把最小值都给a[0]了,你再打印a[0],自然全是你输入的最小值0了
============================
package Utils.Sort;public class InsertSort implements SortStrategy
{
public void sort(Comparable []obj)
{ if (obj == null)
{ throw new NullPointerException("The argument can not be null!");
}
int size = 1;
while (size < obj.length)
{ insert(obj, size++, obj[size - 1]);
} }
private void insert(Comparable []obj, int size, Comparable c)
{ for (int i = 0 ;i < size ;i++ )
{ if (c.compareTo(obj[i]) < 0)
{ System.out.println(obj[i]);
for (int j = size ;j > i ;j-- )
{ obj[j] = obj[j - 1];
}
obj[i] = c;
break;
} } } }
public static int[] sort(int[] a, int changdu) {
int[] temp = new int[changdu];
int i;
for (i = 1; i <= temp.length; i++) {
temp[i - 1] = move(a, i);
}
return temp;
} private static int move(int[] a, int i) { int min = a[i-1];
int smallindex = 0;
int index;
for (index = i; index < a.length; index++) {
if (a[index] < min) {
min = a[index];
smallindex = index;
}
}
for (int j = smallindex; j > 0; j--) {
a[j] = a[j - 1]; }
a[i - 1] = min;
return a[i - 1];
}
主要问题是min的初值不正确,不应该每次给a[0],对于每次遍历其前i-1都是排好序的,只要比较其后的就可以了。还要不知道你changdu这个参数是干什么用的