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

N minimalnih elemenata niza

[es] :: .NET :: N minimalnih elemenata niza

[ Pregleda: 2941 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mladenmp

Član broj: 193827
Poruke: 51
89.188.32.*

Jabber: info@mladenmp.ml
Sajt: www.mladenmp.ml


+1 Profil

icon N minimalnih elemenata niza18.10.2008. u 18:15 - pre 188 meseci
Dakle, treba da iz jednog niza npr. x(10) nadjem 7 najmanjih elemenata niza.
Ako nemko ima neku ideju ili vec napisan kod koji radi isto to ili slicno,
bio bih vrlo zahvalan.
Sad malo podataka: u pitanju je program u VB-u, niz ukupnih elemenata je x(n),
pomocni niz za 7 min. elemenata bice z(k).
Evo i koda koji sam napisao za trazenje minimalnog elementa.

Code:

Public Function minimalni(ByVal x() As Double, ByVal min As Double) As Double
        min = x(0)
        For i = 0 To n - 1
            If x(i) < min Then
                min = x(i)
            End If
        Next
             Return min
    End Function


E sad mene zanima kako napisati kod za npr. 7 minimalnih elemenata i te elemente
smjestiti u niz z(k).
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
79.101.255.*



+987 Profil

icon Re: N minimalnih elemenata niza18.10.2008. u 19:01 - pre 188 meseci
Najprostije sto meni pada na pamet je da ih sortiras u rastucem poretku i da uzmes prvih 7 elemenata.


[Ovu poruku je menjao Igor Gajic dana 18.10.2008. u 21:05 GMT+1]
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
195.252.105.*



+7 Profil

icon Re: N minimalnih elemenata niza20.10.2008. u 15:40 - pre 188 meseci
Evo nesto na brzinu ... nisam imao vremena da je optimalizujem. Mozda ti neko drugi napise neku bolju fn za ovo , a mozes i ovu da sredis...
Funkcija vraca prvih No najmanjih elemenata

Code:

Public Class Form1

    'Array - ulazni Double niz, No - koliko elemenata se trazi 
    Public Function Min(ByVal Array() As Double, ByVal No As Double) As Double() ' vraca niz brojeva 

        Dim retarr(No - 1) As Double, n As Long, i As Long, cn As Double = 0
        If (No > UBound(Array) + 1 Or No = 0) Then Return retarr ' ako je trazeno vise brojeva nego sto ima u nizu

        For n = LBound(retarr) To UBound(retarr)
            For i = LBound(Array) To UBound(Array)
                If (n = LBound(retarr)) Then
                    If (Array(i) < cn) Then cn = Array(i)
                Else
                    If cn = retarr(n - 1) Then
                        If (Array(i) > retarr(n - 1)) Then cn = Array(i)
                    Else
                        If (Array(i) > retarr(n - 1) And Array(i) < cn) Then cn = Array(i)
                    End If
                End If
            Next
            retarr(n) = cn
            Debug.Print(retarr(n))
        Next
        Return retarr
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim niz(9) As Double, n As Integer

        For n = 0 To 9 ' punimo niz brojevima  9,8,7,6,5,4,3,2,1,0
            niz(9 - n) = n
        Next n

        Min(niz, 5)
    End Sub
End Class

 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
91.148.95.*

ICQ: 20785904


+4 Profil

icon Re: N minimalnih elemenata niza21.10.2008. u 22:52 - pre 188 meseci
Code:
int [] f (int [] niz, int n)
{
   Array.Sort(niz);
  int rv = new int[n];
   for (int i=0;i<n;i++)
      rv[i]=niz[i];
   return rv;
}

ovo sortiranje ti je quicksort (ocekivano N*log(N))

mogao bi da optimizujes, da ne sortiras citav niz, vec da radis radis particionisanje ulaznog niza (kao sto radi [randomized] quicksort) , pa da juris particioni element na poziciji k. - al u tvoj slucaju nije vredno truda... prosto sortiraj niz i izvuci prvih k komada...
 
Odgovor na temu

mladenmp

Član broj: 193827
Poruke: 51
89.188.32.*

Jabber: info@mladenmp.ml
Sajt: www.mladenmp.ml


+1 Profil

icon Re: N minimalnih elemenata niza22.10.2008. u 01:46 - pre 188 meseci
Citat:
sallle
Code:
int [] f (int [] niz, int n)
{
   Array.Sort(niz);
  int rv = new int[n];
   for (int i=0;i<n;i++)
      rv[i]=niz[i];
   return rv;
}

ovo sortiranje ti je quicksort (ocekivano N*log(N))

mogao bi da optimizujes, da ne sortiras citav niz, vec da radis radis particionisanje ulaznog niza (kao sto radi [randomized] quicksort) , pa da juris particioni element na poziciji k. - al u tvoj slucaju nije vredno truda... prosto sortiraj niz i izvuci prvih k komada...


E bas ti hvala. to mi je i trebalao da u 3 linije zavrsim funkciju.
sve radi kako treba.nisam znao da ima ugradjenu funkciju za sortiranje
Hvala jos jednom.
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
80.93.229.*

ICQ: 20785904


+4 Profil

icon Re: N minimalnih elemenata niza22.10.2008. u 14:37 - pre 188 meseci
hendluj (ako vec nisi) situaciju kad je n > niz.Length, i kad je n<1
 
Odgovor na temu

[es] :: .NET :: N minimalnih elemenata niza

[ Pregleda: 2941 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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