logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Algorytmy w C++, dziel i zwyciężaj, złożoność obliczeniowa.

invx 04 Lut 2007 22:24 3730 3
REKLAMA
  • #1 3529238
    invx
    Poziom 25  
    Posty: 952
    Pomógł: 17
    Ocena: 102
    Proszę o pomoc :)
    to taka jednorazowa pomoc dla kolegi :P


    4. Przedstaw algorytm rozwiązania problemu wyszukiwania maksimum i minimum w danej tablicy liczb całkowitych stosując metodę "dziel i zwyciężaj".

    5. Dany jest uporządkowany ciąg liczb całkowitych (od najmniejszej do największej). Stosując metodę "dziel i zwyciężaj" utwórz algorytm wyszukiwania pozycji danej liczby w tym ciągu.

    7. Dany jest ciąg A(n), zapisany następująco:

    int A(int n)
    {
    if (n= =1) return 1;
    else return A(n-1)+ 5*n-4;
    }

    a) uzupełnij definicję do pełnego programu w C++ (a więc funkcja główna main i wywołanie funkcji A);
    b) zaproponuj algorytm obliczania n-tego wyrazu ciągu wykorzystując metodę programowania dynamicznego;
    c) określ złożoność algorytmu wykorzystującego metodę programowania dynamicznego.

    1. Podaj cechy charakterystyczne algorytmów o następujących klasach złożoności: logarytmicznej, wykładniczej, kwadratowej.

    2. Podaj złożoność obliczeniową poniższego algorytmu:
    for (int i=0;i<n;i++)
    a[i]=0;
    for (int j=0;j<n-1;j++)
    b[j]=j+a[j];

    3. Porównaj dwie wybrane złożoności obliczeniowe.

    4. Dana jest 10 elementowa tablica liczb całkowitych. Stosując sortowanie przez scalanie uporządkuj tablicę rosnąco.
  • REKLAMA
  • #2 3530389
    marihires
    Poziom 30  
    Posty: 986
    Pomógł: 193
    Ocena: 129
    być może jest to odpowiedz na pytanie nr 4:

    Cytat:

    #pragma argsused
    #include<stdio.h>
    #include<conio.h>
    #include <stdlib.h>
    #include <alloc.h>
    void wpisanie(float *t, int n);
    void wypisanie(float *t,int n);
    void sortowanie(float *t,float n);
    void minimum(float *t, int n);
    float *rezerwacja(int n);
    void zwolnienie(float *t,int n);
    int main()
    {
    float *x;
    int n;
    printf("\t\tPROGRAM POKAZUJE ZASTOSOWANIE TABLIC JEDNOWYMIAROWYCH\n\n");
    printf("Podaj rozmiar tablicy\n");
    scanf("%d",&n);
    x=rezerwacja(n);
    wpisanie(x,n);
    printf("\n");
    wypisanie(x,n);
    printf("\n");
    printf("Tablica posortowana:\n\n");
    sortowanie(x,n);
    wypisanie(x,n);
    printf("\n");
    minimum(x,n);
    zwolnienie(x,n);
    getch();
    return 0;
    }

    float *rezerwacja(int n)
    {
    float *t;
    t=(float*)calloc(n,sizeof(float));
    }

    void zwolnienie(float *t,int n)
    {
    free(t);
    }

    void wpisanie(float *t, int n)
    {
    int i;

    for(i=0;i<=n-1;i++)
    {
    printf("t[%d]\t",i);
    scanf("%f",t+i);
    }
    }

    void wypisanie(float *t, int n)
    {
    int i;


    for(i=0;i<=n-1;i++)
    {
    printf("%2.1f\t",*(t+i));
    }
    printf("\n");
    }
    void sortowanie(float *t,float n)
    {
    int i,j,k;
    float z,buf;

    for(i=0;i<=n-1;i++)
    {
    z=*(t+i);
    k=i;

    for(j=i;j<=n-1;j++)
    {
    if(z>*(t+j))
    {z=*(t+j);
    k=j;
    }
    }
    buf=*(t+i);
    *(t+i)=*(t+k);
    *(t+k)=buf;
    }
    }

    void minimum(float *t, int n)
    {
    int i;
    float min,max;

    min=*t;
    max=*t;

    for(i=0;i<=n-1;i++)
    {
    if (min>*(t+i))
    {
    min=*(t+i);
    }
    }
    for(i=0;i<=n-1;i++)
    {
    if (max<*(t+i))
    {
    max=*(t+i);
    }
    }


    printf("Wartosc najmniejsza= %2.1f\n",min);
    printf("Wartosc najwieksza= %2.1f\n",max);
    }
  • REKLAMA
  • #3 3536382
    Killerca
    Poziom 13  
    Posty: 56
    Pomógł: 5
    Zadanie 7 podpunkt a)
    void main()
    {
      int n,k;
      printf("Podaj n:");
      scanf("%d",&n);
      k=a(n);
      printf("Wynik:%d",k);
      getch();
    }


    W dalszej części nie wiem o co chodzi.
  • #4 3539976
    Songo
    Poziom 13  
    Posty: 37
    Pomógł: 4
    Ocena: 1
    ad. 5

    
       int main(){
         int T[...] // tablica[0..n] z posortowanymi liczbami
         int V; // szukana liczba;
         int i,j;
         i=0; j=n;
         while (j-i>0) {
            int s= (i+j)/2;
            if (V<T[s]) j=s-1;
            else i=s;
         }
         if (T[i]==V) printf("znaleziono na pozycji: %d",i);
       }
    


    zastanawiam się tylko po co Ci to wszystko ... eh...

    --
    Maciek
REKLAMA