JAVA算法, 看看有什么做法;

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。int[]a=newint[]{1,2,6,14,25,36,37,55};... 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 int[] a = new int[]{1, 2,6, 14, 25, 36, 37,55}; 展开
 我来答
开心的马六
2014-11-28 · TA获得超过473个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:205万
展开全部
二分插入排序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-03-14
展开全部

因为你用到了数组,所以每次插入的时候都需要重新分配空间,而且没法用二分法进行查找和插入。

其实还有两种更好的解决方案:

  1. 将所有数字都读完,然后进行排序

  2. 读数字前,先确定一共有多少个数字,然后分配充足的空间,这时就可通过二分法进行查找,但还是避免不了大量数据的移动。

int insert(int[]a, int num)

{

 int[]temp = new int[a.length + 1];

 int i = 0;

 while(a[i] < num)

 {

  temp[i] = a[i];

  ++i;

 }

 temp[i] = num;

 while(i < a.length)

 {

  temp[i + 1] = a[i];

  ++i;

 }

 a = temp;

}

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式