java - 求下面这道算法的解释
扔个三星炸死你
扔个三星炸死你 2017-07-05 10:26:05
0
2
1017

已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

void Delete(ElemType A[ ],int n) ∥A是有n个元素的一维数组,本算法删除A中所有值为item的元素。 {i=1;j=n;∥设置数组低、高端指针(下标)。 while(i

改写之后运行不出来,下面是改写后的

package 线性表; public class Work_10 { public Work_10(){ int[] arr={2,34,4,4,5}; int item=4; delete(arr,item,arr.length-1); for(int a:arr){ System.out.print(a+" "); } } public static void delete(int[] array,int item,int n){ int i=0,j=n; while(i

不知道该怎么改?
求大佬解释

扔个三星炸死你
扔个三星炸死你

全部回复 (2)
淡淡烟草味

要想删除,先搜索,后删除,给你个搜索的,剩下的自己思考下写个变种就可以了。

public static int search(byte[] a,int n, byte item) { int low = 0; int high = n - 1; while (low <= high) { int mid = (low + high) >>> 1; byte midVal = a[mid]; if (midVal < item) low = mid + 1; else if (midVal > item) high = mid - 1; else return mid; // 找到item } return -(low + 1); // 没找到item }
    世界只因有你

    哦,多出来是因为你输出的个数错了,删除的过程没问题。

    删除前,你的数组内容是2,34,4,4,5,共 5 个元素。

    要删除的内容为 4,也就是说删除后只剩 3 个元素,分别是2,34,5

    所以你的结果输出只需要输出数组的前 3 个,后面那两个是作废了的元素。

      最新下载
      更多>
      网站特效
      网站源码
      网站素材
      前端模板
      关于我们 免责声明 Sitemap
      PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!