黑马程序员技术交流社区

标题: 关于排序的一点问题 [打印本页]

作者: 张明    时间: 2012-8-19 17:14
标题: 关于排序的一点问题
要求:在一个有序的数组中插入一个数,仍然保持有序性  
  int[] arr={0,1,2,3,5,6,7,8};
  for(int x=6;x>=0;x--)//要有序插入4,手动赋值给x=6
  {
   if(arr[x]>4)
    arr[x+1]=arr[x];
   else
   {
    arr[x+1]=4;
   }
  }

这是我写的关键的地方,但是运行的结果好像不太正确啊,请教大家一下

作者: 黑马王建伟    时间: 2012-8-19 17:50
首先我用整形数组的方式做,直接代码,这用方式是不行的,因为整形数组的长度在初始化时就固定死了,是不可改变的,如果操作,就会报空指针异常,如图:

但用会自增的数组就可以了,如图:

未命名.jpg (144.48 KB, 下载次数: 31)

未命名.jpg

未命名a.jpg (109.52 KB, 下载次数: 38)

未命名a.jpg

作者: 张明    时间: 2012-8-19 19:06
黑马王建伟 发表于 2012-8-19 17:50
首先我用整形数组的方式做,直接代码,这用方式是不行的,因为整形数组的长度在初始化时就固定死了,是不可 ...

谢谢你的回答。
但是我对这个自增的数组完全陌生,能否详解一下
作者: 许庭洲    时间: 2012-8-20 08:58
arr[x+1]=arr[x];  //此行会将数组里面的元素8给覆盖了,应该先让arr数组增加一个长度,由于C#不允许随便改数组的长度,所以建议用ArrayList存储arr里面的元素




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2