이 글은 주로 자바 데이터 구조와 알고리즘(순서 배열 및 이진 검색)에 대한 자세한 설명을 소개하며, 관심 있는 친구들은 참고할 수 있습니다.
1. 개요
순서 배열에서는 이진 검색이 자주 사용됩니다. 검색 속도를 향상시키기 위해 사용됩니다. 오늘날 우리는 순차 검색과 이진 검색을 사용하여 배열의 추가, 삭제, 수정 및 검색을 구현합니다.
2. 정렬된 배열의 장점과 단점
장점: 정렬되지 않은 배열에 비해 검색 속도가 훨씬 빠릅니다.
단점: 삽입 시 다음 데이터를 정렬된 방식으로 이동해야 합니다.
3. 정렬된 배열과 정렬되지 않은 배열 arrays 순서형 배열의 일반적인 장점과 단점
데이터 삭제 시 삭제된 항목의 허점을 메우기 위해 다음 데이터를 앞으로 이동해야 함
4. 코드 구현
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; } }
5. 테스트
위 내용은 Java 순서 배열 데이터 구조 분석 및 이진 검색 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!