Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Notkun: i = helmingunarleitB(a,n,s);
- // Fyrir: n er heiltala (þ.e. int) >=0.
- // a er strengjafylki (þ.e. fylki af const
- // char*) sem inniheldur n sæti (eða fleiri),
- // og sætin eru í vaxandi stafrófsröð miðað
- // við venjulega strengjasamanburðarfallið
- // strcmp. s er C strengur (þ.e. const char*).
- // Eftir: 0 <= i <= n, og allir strengirnir í
- // sætunum a[0..i-1] eru fyrir framan
- // strenginn s í stafrófsröð eða jafnir s,
- // og allir strengirnir í sætunum a[i..n-1]
- // eru fyrir aftan s í istafrófsröð.
- // Innihald fylkisins a er óbreytt.
- int helmingunarleitB( const char **a, int n, const char *s )
- {
- // HÉR VANTAR FORRITSTEXTA.
- // MUNIÐ AÐ HÉR Á AÐ NOTA ENDURKVÆMNI OG ENGA LYKKJU.
- // ATHUGIÐ AÐ TIL AÐ LEITA ENDURKVÆMT Í SVÆÐINU
- // a[i..j-1] MÁ NOTA KALLIÐ
- // helmingunarleitB(&a[i],j-i,s)
- // EN ATHUGIÐ LÍKA AÐ SKILAGILDIÐ ÚR ÞVÍ KALLI ER
- // HLIÐRAÐ MIÐAÐ VIÐ BYRJUNARSÆTIÐ a[0] Í HEILDARFYLKINU.
- int i = 0;
- int j = n;
- if(i==j) return 0;
- int mid = i + (j-i)/2;
- int comp = strcmp(a[mid],s);
- if(comp > 0)
- {
- return helmingunarleitB(&a[i],mid,s);
- }
- else
- {
- return mid+1+helmingunarleitB(&a[mid+1],j-mid-1,s);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement