Forum » Programiranje » C# StrandSort
C# StrandSort
z3ro ::
Zanima me, kako bi naredil urejanje s prameni (iz polja, ki ga želimo urediti, jemljemo naraščajoče urejena zaporedja števil (pramena) ter jih združevanjem vključujemo v polje, ki predstavlja naš rezultat.) samo z uporabo polj. Spodaj v kodi imam narejeno s seznamom (List), česar pa pri nalogi ne smemo uporabljati.
static private int[] odstrani(int[] poljeindeksov, int odstraniNa) { int[] novopolje = new int[poljeindeksov.Length - 1]; int i = 0; int j = 0; while (i < poljeindeksov.Length) { if (i != odstraniNa) { novopolje[j] = poljeindeksov[i]; j++; } i++; } return novopolje; } static private int[] zdruzi(int[] A, int[] B) { var list = new List<int>(); list.AddRange(A); list.AddRange(B); list.Sort(); return list.ToArray(); } //a predstavlja polje (celostevilskih) elementov, ki ga urejamo static int[] urediSPrameni(int[] a) { List<int> SubList = new List<int>(); int[] urejenopolje = new int[] { }; int last; while (a.Length > 0) { SubList.Clear(); SubList.Add(a[0]); last = 0; a = odstrani(a, 0); for (int j = 0; j < a.Length; j++) { if (a[j] > SubList[last]) { SubList.Add(a[j]); last++; a = odstrani(a, j); } } urejenopolje = zdruzi(SubList.ToArray(), urejenopolje); } return urejenopolje; }
epicVoid ::
A seznamov ne smete uporabljat ? Iz wikipedije : Strand sort is most useful for data which is stored in a linked list, due to the frequent insertions and removals of data. Ta pa je huda.
Spura ::
Napisi si funkcije, ki v polja dodajajo in odvzemajo podatke, pri cemer podatke od pozicije naprej najprej primerno naprej premaknejo oziroma skopirajo v nov vecji array, ce je velikost presezena. Potem lahko algoritem naredis isto kot bi imel list.
z3ro ::
epicVoid: ne, samo arraye lahko uporabljamo.
Sem probal spremenit List v array pa ne dela..
Sem probal spremenit List v array pa ne dela..
static int[] urediSPrameni(int[] a) { //List<int> SubList = new List<int>(); int[]podpolje=new int[]{}; int[] urejenopolje = new int[] { }; int last; while (a.Length > 0) { //SubList.Clear(); Array.Clear(podpolje, 0, podpolje.Length); //SubList.Add(a[0]); podpolje[0] = a[0]; //napaka last = 0; a = odstrani(a, 0); for (int j = 0; j < a.Length; j++) { if (a[j] > podpolje[last]) { podpolje[podpolje.Length-1]=a[j]; //dvomim da je prav last++; a = odstrani(a, j); } } urejenopolje = zdruzi(podpolje, urejenopolje); } return urejenopolje; }
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java - DN] Naključna številaOddelek: Šola | 1352 (881) | nyler |
» | [java] kombinacijeOddelek: Programiranje | 2813 (2288) | napsy |
» | Za programerske teoretikeOddelek: Programiranje | 8785 (5587) | Jerry000 |
» | Generiranje kombinacij znakovOddelek: Programiranje | 1308 (993) | c0dehunter |
» | [Java] Sortiranje objektovOddelek: Programiranje | 2840 (2840) | tjaz24 |