算法题:根据数组访问的次数排序,请教中??
算法:
1,初始化数组:0,2,6,76,5,12
2. 若访问数组中的元素,则次数自动加1,根据元素的访问次序按排序
若访问元素5一次,则排列效果如图:
排序前:
0,2,6,76,5,12
排序后
5,0,2,6,76,12
代码如下:
public class Test{
public static void main(String [] args){
//定义数组,并完成初始化
Ary [] a=new Ary[6];
int i=0;
a[i++] = new Ary(0);
a[i++] = new Ary(2);
a[i++] = new Ary(6);
a[i++] = new Ary(76);
a[i++] = new Ary(5);
a[i++] = new Ary(12);
//测试代码,这是一个好习惯
Ary.search(a,5);
//打印数组
for (int p = 0; p <a.length; p++)
System.out.println (a[p].data+ ": "+a[p].time);
}
}
class Ary{
int data;
int time;
public Ary(int value){
this.data=value;
time=0;
}
public static void search(Ary [] ary,int value)
{
int j=0;
for (int i = 1; i <ary.length; i++)
{
if (value==ary[i].data)
ary[i].time+=1;
if (i ==0||ary[i].time <ary[i-1].time)
return ;
else
{
ary[0]=ary[i];
for (j = i-1; j> =1&&ary[j].time <ary[i].time; j--)
{
ary[j+1]=ary[j]; ;
}
ary[j]=ary[0];
}
}
}
}
------解决方案--------------------先不说你的排序算法对不对,你看你的FOR 循环,for (int i = 1; i <ary.length; i++)
这就错了,i从0开始。