Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void qsort (int *tab, short l, short n)
- {
- if (n <= l) return;
- int i = l-1;
- int j = n+1;
- int s = tab[(n+l)/2];
- int x=0;
- while(i <= j)
- {
- while(s > tab[++i]);
- while(s < tab[--j]);
- if (i <= j) swap(tab[i], tab[j]);
- }
- if(j > l) qsort(tab, l, j);
- if(i < n) qsort(tab, i, n);
- }
- int flagapolska(int *tab, short n)
- {
- int p=0, k=n-1;
- while(p<k)
- {
- while(p<n-1 && tab[p]%2==0) p++;
- while(k>=0 && tab[k]%2==1) k--;
- if(p<k)
- {
- swap(tab[p],tab[k]);
- }
- }
- return k;
- }
- int naiwny(int n, int m, string tekst, string wzorzec, int *tab)
- {
- int x=-1, j=0;
- for(int i = 0; i < n-1; i++)
- {
- if (wzorzec == tekst.substr(i,m))
- {
- tab[j]=i;
- j++;
- }
- }
- return j;
- }
- int KMP (int n, int m, int *ind, string tekst, string wzorzec)
- {
- int *tab;
- tab = new int[m];
- tab[0]=0;
- tab[1]=0;
- int t=0;
- int x=0;
- for(int i=2; i<=m; i++)
- {
- while(t>0 and wzorzec[t]!=wzorzec[i-1]) t=tab[t];
- if(wzorzec[t]==wzorzec[i-1])t++;
- tab[i]=t;
- }
- int i=1;
- int j=0;
- while(i<=n-m+1)
- {
- while(wzorzec[j]==tekst[i+j-1] and j<m) j++;
- if(j==m)
- {
- ind[x]=i-1;
- x++;
- //x=i;
- j=m;
- }
- i=i+max(1,j-tab[j]);
- j=tab[j];
- }
- return x;
- }
- bool pierwsza(int n)
- {
- if(n<2)
- return false;
- for(int i=2;i*i<=n;i++)
- if(n%i==0)
- return false;
- return true;
- }
- int hasze (string tekst)
- {
- int n=tekst.length();
- int pd=n, lp;
- int hasz=0;
- cout << "Podaj liczbe pierwsza\n";
- do
- {
- cin >> lp;
- if(pierwsza(lp)==false)cout << "Podaj liczbe pierwsza\n";
- }
- while(pierwsza(lp)==false);
- for(int i = 0; i<n; i++)
- for(int j = 0; j<i; j++)
- {
- if(tekst[i]==tekst[j])
- {
- pd--;
- break;
- }
- }
- for(int i = 0; i<n; i++)
- {
- hasz +=((int)tekst[i]-97)*(int)pow((double)pd,(double)n-i-1) % lp;
- }
- cout << hasz << endl;
- }
- int liniowe(int n, int x, int tab[])
- {
- int a = -1;
- for(int i=0;i<n;i++){
- if(tab[i]==x) {
- a=i;
- i=n;
- }
- }
- return a;
- }
- int Bisekcja(int szukana, int tab[], int poczatek, int koniec)
- {
- int srodek;
- while (poczatek<koniec)
- {
- srodek=(poczatek + koniec)/2;
- if (szukana<=tab[srodek])
- koniec=srodek;
- else
- poczatek=srodek+1;
- }
- if (szukana == tab[poczatek])
- return poczatek;
- else return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement