Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie Dichotomie in der C-Sprache, um Array-Elemente zu finden

So implementieren Sie Dichotomie in der C-Sprache, um Array-Elemente zu finden

coldplay.xixi
coldplay.xixiOriginal
2021-03-17 14:59:325627Durchsuche

C-Sprachdichotomie zur Implementierung der Methode zum Suchen von Array-Elementen: 1. Rekursiver Algorithmus, der Code ist [if(a[mid] == key) return mid] 2. Nicht-rekursiver Algorithmus, der Code ist [while( links < rechts && a[mid] != key )].

So implementieren Sie Dichotomie in der C-Sprache, um Array-Elemente zu finden

Die Betriebsumgebung dieses Tutorials: Windows 7-System, c99-Version, DELL G3-Computer.

C-Sprach-Dichotomie-Methode zum Implementieren der Suche nach Array-Elementen:

Rekursiver Algorithmus

#include<stdio.h>
//二分法实现数组查找
 
//
int recurbinary(int *a, int key, int low, int high)
{
    int mid;
    if(low > high)
        return -1;
    mid = (low + high)/2;
    if(a[mid] == key) return mid;
    else if(a[mid] > key)
         return recurbinary(a,key,low,mid -1);
    else
         return recurbinary(a,key,mid + 1,high);
 
}

Nichtrekursiver Algorithmus

int binary( int *a, int key, int n )
{
    int left = 0, right = n - 1, mid = 0;
    mid = ( left + right ) / 2;
    while( left < right && a[mid] != key )
    {
        if( a[mid] < key ) {
            left = mid + 1;
        } else if( a[mid] > key ) {
            right = mid - 1;
        }
        mid = ( left + right ) / 2;
    }
    if( a[mid] == key )
        return mid;
    return -1;
}
 
int main(void)
{
int a[10] = {2,4,6,8,10,12,14,16,18,20},t,k,f;
scanf("%d",&t);
k = recurbinary(a,t,2,20);
f = binary(a,t,10);  //非递归算法
if(k == -1){
printf("不存在此数\n");
}else{
printf("%-5d是数组第%d个元素\n%-5d数组的第%d个元素",k,k+1,f,f+1);
}
 
return 0;
}

[Verwandte Lernempfehlungen: C-Sprach-Tutorial-Video]

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Dichotomie in der C-Sprache, um Array-Elemente zu finden. 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