Heim >Java >javaLernprogramm >Analyse der Java-geordneten Array-Datenstruktur und des binären Suchalgorithmus

Analyse der Java-geordneten Array-Datenstruktur und des binären Suchalgorithmus

黄舟
黄舟Original
2017-09-25 10:18:112048Durchsuche

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung von Java-Datenstrukturen und -Algorithmen (geordnete Arrays und binäre Suche) vor, die einen gewissen Referenzwert haben

Übersicht

Binäre Suche wird oft in geordneten Arrays verwendet, was die Suchgeschwindigkeit verbessern kann. Heute verwenden wir die sequentielle Suche und die binäre Suche, um das Hinzufügen, Löschen, Ändern und Durchsuchen von Arrays zu implementieren.

2. Vor- und Nachteile geordneter Arrays

Vorteile: Die Suchgeschwindigkeit ist viel schneller als bei ungeordneten Arrays
Nachteile: Beim Einfügen müssen Sie sortieren Folgende Daten verschieben

3. Gemeinsame Vor- und Nachteile von geordneten Arrays und ungeordneten Arrays

Beim Löschen von Daten müssen die folgenden Daten nach vorne verschoben werden, um die gelöschten Daten auszufüllen Elemente Schwachstellen

4. Code-Implementierung


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 >

Das obige ist der detaillierte Inhalt vonAnalyse der Java-geordneten Array-Datenstruktur und des binären Suchalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn