一个已按从小到大的顺序排好的数组,今输入一个数要求按原来排序的规律将它插入数组中。

如题所述

这种问题用二分查找反而降低效率,没必要
一边移动原来的元素一边查找插入位置才是最快的、最简洁的算法

void insert(int a[],int n,int x)//将整数x插入到原有n个元素的a数组中
{
int i;
for (i=n;i>0 && x<a[i-1];i--)
a[i]=a[i-1]; //将所有大于x的元素向后移动一格,并且使i停留在x应该被插入的位置
a[i]=x;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-05-21
用 二分查找法,找到 要插入的 下标
<br><br>着下边的是用二分查找法 查找数组中的值的下标,这是经典的算法,呵呵。
你修改一下吧
<br>如下:
<br><br>public int find(long searchKey)
<br><br> {
<br><br> int lowerBound=0;
<br><br> int upperBound=nElems-1;
<br><br> int curIn;
<br><br>
<br><br> while(true)
<br><br> {
<br><br> curIn=(lowerBound+upperBound)/2;
<br><br>
<br><br> if(arr[curIn]==searchKey)
<br><br> return curIn;
<br><br> else
<br><br> if(lowerBound>upperBound)
<br><br> return nElems;
<br><br> else
<br><br> {
<br><br> if(arr[curIn]<searchKey)
<br><br> lowerBound=curIn+1;
<br><br> else
<br><br> upperBound=curIn-1;
<br><br> }
<br><br> }
<br><br> }
第2个回答  2007-05-21
<?
//接收传过来的值
$value = $_GET['value'];
//创建一个数组
$ary = Array("1","2","3","4");
//插入数组里面
array_push($value);
//对数组进行排序
sort($ary);
//循环遍历出来
foreach($ary as $key => $value)
{
echo "这个数组 ".$key." = ".$value."<br />";
}
?>

其实就是 先吧值传过去 然后进行一下排序就好了啊