java吧 关注:1,269,097贴子:12,774,437
  • 14回复贴,共1

大家看下,很有意思的一道题

只看楼主收藏回复

下面的程序中,编写将一维数组a[]中不相同的数按从小到大的序重新存于一组数组a[]中,
其中...是需要写的程序,共5处需写,大家看下,很有意思的一道题。
package day02;
public class A {
public static void main(String[] args) {
int a[]={15,7,15,6,4,3,4,6,7};
int i,j,k,low,high,mid,t;
for(i=k=1;i<a.length;i++){
low=0;
high=k-1;
while(..){//需写
mid=(low+high)/2;
if(a[mid]>a[i]){
..//需写
}else low=mid+1;
if( ... || a[low]!=a[i]){//需写
t=a[i];
for(j=k-1;...;j--){//需写
a[j+1]=a[j];
...//需写
}
k++;
}
}
for(j=0;j<k;j++){}
System.out.println(a[j]);
}
}
}


IP属地:河南1楼2016-03-31 22:35回复
    不知道楼主所说的有趣的地方在哪里。见过这种排序的人随便填,没见过的人基本不可能做出来。


    来自Android客户端6楼2016-04-01 07:58
    收起回复
      2025-07-13 17:48:33
      广告
      二分排序法


      IP属地:河南7楼2016-04-01 18:35
      回复
        没人能给出答案吗


        IP属地:河南8楼2016-04-01 19:59
        收起回复
          卧槽,一个Arrays.copyof不就完事了么


          来自iPhone客户端9楼2016-04-02 08:30
          收起回复
            其实我总感觉题目不对…………


            来自iPhone客户端10楼2016-04-02 18:21
            收起回复
              //package day02;
              public class t {
              public static void main(String[] args) {
              int a[]={15,15,7,15,6,4,3,4,6,7};
              int i,j,k,low,high,mid,t;
              for(i=k=1;i<a.length;i++){
              low=0;
              high=k-1;
              while(low<=high){
              mid=(low+high)/2;
              if(a[mid]>a[i]) high=mid-1;
              else low=mid+1;
              }
              if(low==0&&a[low]!=a[i]||low>0&&a[low-1]!=a[i]){
              t=a[i];
              for(j=k-1;j>=low;j--){
              a[j+1]=a[j];
              }
              a[low]=t;
              k++;
              }
              }
              for(j=0;j<k;j++)System.out.print(a[j]+" ");
              }
              }


              IP属地:河南11楼2016-04-02 19:20
              回复
                就是感觉第三个空不知道填什么,不过我改了


                IP属地:河南12楼2016-04-02 19:22
                回复