Advertisement
Guest User

HelmingunarLeit B

a guest
Jan 27th, 2015
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.38 KB | None | 0 0
  1.  // Notkun:  i = helmingunarleitB(a,n,s);
  2. // Fyrir:   n er heiltala (þ.e. int) >=0.
  3. //          a er strengjafylki (þ.e. fylki af const
  4. //          char*) sem inniheldur n sæti (eða fleiri),
  5. //          og sætin eru í vaxandi stafrófsröð miðað
  6. //          við venjulega strengjasamanburðarfallið
  7. //          strcmp.  s er C strengur (þ.e. const char*).
  8. // Eftir:   0 <= i <= n, og allir strengirnir í
  9. //          sætunum a[0..i-1] eru fyrir framan
  10. //          strenginn s í stafrófsröð eða jafnir s,
  11. //          og allir strengirnir í sætunum a[i..n-1]
  12. //          eru fyrir aftan s í istafrófsröð.
  13. //          Innihald fylkisins a er óbreytt.
  14.  
  15. int helmingunarleitB( const char **a, int n, const char *s )
  16. {
  17.     // HÉR VANTAR FORRITSTEXTA.
  18.     // MUNIÐ AÐ HÉR Á AÐ NOTA ENDURKVÆMNI OG ENGA LYKKJU.
  19.     // ATHUGIÐ AÐ TIL AÐ LEITA ENDURKVÆMT Í SVÆÐINU
  20.     // a[i..j-1] MÁ NOTA KALLIÐ
  21.     //     helmingunarleitB(&a[i],j-i,s)
  22.     // EN ATHUGIÐ LÍKA AÐ SKILAGILDIÐ ÚR ÞVÍ KALLI ER
  23.     // HLIÐRAÐ MIÐAÐ VIÐ BYRJUNARSÆTIÐ a[0] Í HEILDARFYLKINU.
  24.     int i = 0;
  25.     int j = n;
  26.     if(i==j) return 0;
  27.     int mid = i + (j-i)/2;
  28.     int comp = strcmp(a[mid],s);
  29.     if(comp > 0)
  30.     {  
  31.         return helmingunarleitB(&a[i],mid,s);
  32.     }
  33.     else
  34.     {
  35.  
  36.         return mid+1+helmingunarleitB(&a[mid+1],j-mid-1,s);
  37.     }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement