Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Umetanje elemenata u sortiran niz

[es] :: C/C++ programiranje :: C/C++ za početnike :: Umetanje elemenata u sortiran niz

[ Pregleda: 3483 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

proka_92
proka_92
Smederevo

Član broj: 153372
Poruke: 69
*.dynamic.isp.telekom.rs.



+4 Profil

icon Umetanje elemenata u sortiran niz27.11.2010. u 14:42 - pre 163 meseci
Pokusavam da napisem program koji ce za svaki uneti element nalaziti poziciju u nizu i umetati ga na tu poziciju, tako da niz ostane sortiran u rastucem poretku. Gde gresim?
Code:
#include<stdio.h>
int main()
{
    int arr[10],i,n,brel=0,tmp,poz,x,z;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        poz=-1;
        scanf("%d",&tmp);
        if(brel==0)
        {
            arr[brel]=tmp;
            brel++;
        }
        else
        {
            for(x=0;x<brel;x++)
            {
                if(arr[x]>tmp)
                {
                    poz=x;
                    break;
                }
            if(poz>=0)
            {
                for(x=brel-1;x>=poz;x--)
                    arr[x+1]=arr[x];
                arr[poz]=tmp;
                brel++;
            }
            else
            {
                arr[brel]=tmp;
                brel++;
            }
            }
        }
    }
    for(i=0;i<n;i++)
        printf("\n%d",arr[i]);
    return 0;
}
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: Umetanje elemenata u sortiran niz27.11.2010. u 16:55 - pre 163 meseci
Pozdrav,

sto se tvog resenja tice, ne radi ti kako treba zbog 2 greske.
1:Nisi zatvorio ovu for petlju
Code (c):

            for(x=0;x<brel;x++)
            {
                if(arr[x]>tmp)
                {
                    poz=x;
                    break;
                }
 

odmah posle ovog if-a, vec na kraju. Prebaci } sa kraja na pravo mesto i radice.
2: Ako vec imas definisan niz velicine 10, nema potrebe za unosenjem n posle, ili ako se vec unosi moras da proveris da li je <= od 10 (ili definisane velicine niza).


I moja preporuka sto se resenja problema tice, ako vec imas sortiran niz najbolje je da koristis binarnu pretragu za pronalazenje indeksa niza u koji zelis da ubacis broj. Moraces samo da modifikujes standardnu binarnu pretragu koja u slucaju da nije pronadjen element u nizu vraca -1, da vraca prvi sledeci element.


xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

proka_92
proka_92
Smederevo

Član broj: 153372
Poruke: 69
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Umetanje elemenata u sortiran niz27.11.2010. u 17:37 - pre 163 meseci
Da, sada radi, hvala :) Sto se druge stavke tice, stavio sam 10 kao maksimalan broj elemenata niza, unosim n samo za testiranje, nije mi potrebna provera, ovo sam radio samo da se prisetim nekih stvari, ova metoda mi treba za resavanje drugog zadatka... Kad budem imao malo vise vremena probacu i sa binarnom pretragom da uradim, za sada cu se drzati ove metode! Hvala na pomoci!
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Umetanje elemenata u sortiran niz

[ Pregleda: 3483 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.