>  기사  >  Java  >  Java 순서 배열 데이터 구조 분석 및 이진 검색 알고리즘

Java 순서 배열 데이터 구조 분석 및 이진 검색 알고리즘

黄舟
黄舟원래의
2017-09-25 10:18:111944검색

이 글은 주로 자바 데이터 구조와 알고리즘(순서 배열 및 이진 검색)에 대한 자세한 설명을 소개하며, 관심 있는 친구들은 참고할 수 있습니다.

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. 테스트


rreee

위 내용은 Java 순서 배열 데이터 구조 분석 및 이진 검색 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.