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

coldplay.xixi
Freigeben: 2023-01-03 09:30:14
Original
5644 Leute haben es durchsucht

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);
 
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

[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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage