时间:2021-05-19
一、概述
有序数组中常常用到二分查找,能提高查找的速度。今天,我们用顺序查找和二分查找实现数组的增删改查。
二、有序数组的优缺点
优点:查找速度比无序数组快多了
缺点:插入时要按排序方式把后面的数据进行移动
三、有序数组和无序数组共同优缺点
删除数据时必须把后面的数据向前移动来填补删除项的漏洞
四、代码实现
public class OrderArray { private int nElemes; //记录数组长度 private long[] a; /** * 构造函数里面初始化数组 赋值默认长度 * * @param max */ public OrderArray(int max){ this.a = new long[max]; nElemes = 0; } //查找方法 (二分查找) public int find(long searchElement){ int startIndex = 0; int endIndex = nElemes-1; int curIn; while(true){ curIn = (startIndex + endIndex)/2; if(a[curIn]==searchElement){ return curIn; //找到 }else if(startIndex>endIndex){ //沒有找到 return nElemes; //返回大于最大索引整数 }else{ //还要继续找 if(a[curIn]<searchElement){ startIndex = curIn + 1; //改变最小索引 }else{ //往前找 endIndex = curIn -1; } } } } //插入元素(线性查找) public void insert(long value){ int j; for(j=0;j<nElemes;j++){ if(a[j]>value){ break; } } for(int k=nElemes;k>j;k--){ a[k] = a[k-1]; } a[j] = value; nElemes++; } //删除数据项 public boolean delete(long value){ int j = find(value); if(j==nElemes){ return false; //没找到 }else{ //所有元素往前移动一位 for(int k=j;k<nElemes;k++) a[k] = a[k+1]; nElemes--; return true; } } //展示的方法 public void display(){ for(int i=0;i<nElemes;i++){ System.out.print(a[i]+" "); } } public int size(){ return nElemes; }}五、测试
public static void main(String[] args) { int max = 100; OrderArray oa = new OrderArray(max); oa.insert(12); oa.insert(14); oa.insert(90); oa.insert(89); oa.insert(87); oa.insert(88); oa.insert(67); oa.display(); int searchkey = 90; if(oa.find(searchkey)!=oa.size()){ System.out.println("found"+searchkey); }else{ System.out.println("not found"); } oa.delete(88); oa.delete(90); oa.delete(89); oa.display(); }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C语言数据结构中二分查找递归非递归实现并分析前言:二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的
java算法之二分查找法的实例详解原理假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1。通过数组长
php二分查找示例二分查找常用写法有递归和非递归,在寻找中值的时候,可以用插值法代替求中值法。当有序数组中的数据均匀递增时,采用插值方法可以将算法复杂度从中值法
折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。A搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结
java数据结构之二分查找法binarySearch的实例折半查找法,前提是已经排好序的数组才可查找实例代码:publicclassBinarySearch{i