Java

  • Креатор на темата Креатор на темата deXterche
  • Време на започнување Време на започнување
Грејвдигер
Ај ќе се обидам со слики да објаснам :
Значи да предпоставиме дека веќе има некоја листа со 3 елементи и изгледа вака :
xr9j0.png



И сеа кога додаваш нов елемент конструкторот на SLLNode класата прима некој елемент и плус неговиот следбеник, и прави референцата да покажува кон слебеникот..
И како резултат ќе имаш нешто вака :
647oK.png


И сега вака изгледа како да е се топ но финтата е што first пак е првиот јазел. а сите нови што ги ставаш се ставаат пред first и не можеш да пристапиш до нив бидејќи референцата first си покажува на тоа исто место и треба да се апдејтира да се каже дека првиот елемент не е веќе тоа туку е новиот јазел што се креираше..и тоа се прави
со : first = ins..
Малце збунува дека е со референци но ете замисли дека на листата пристапуваш од надвор со некоја стрелка и ако ја немаш таа линија код, колку и да додаваш нови јазли секогаш ќе може да пристапиш само на јазелот "a" како прв јазел од лисата.
g2LHh.png


И се што правиш е со first = ins e кажуваш дека почетокот на листата е новиот јазел.
PPnUS.png
 
Тава е linked list, така ли?
Ако е да, Инфекшн го е објаснил. Требе да експлицитно да референснеш кој е новио почеток, иначе нема да може да ги посетува новите членови на низата.
 
Да, да, сфаќам. Малку се збунив, пошто first го сметав како јазол што прв се креира, не дека со него се бележи најпрвиот јазол во целата листа. Јасно е сега. :) Фала Mr.InF3ction, имаш пиво у бифе :icon_lol:
 
Код:
public static void bubbleSort(DLL<Integer> lista){
        DLLNode<Integer> i = lista.getFirst();
        DLLNode<Integer> j = i;
     
        while(i.succ != lista.getLast().succ)
        {
            for(j = i; j.succ!=lista.getLast().succ; j = j.succ)
            {
                if(i.element > j.element)
                    swap(i,j);
            }
            i = i.succ;
        }
}

Треба двојно поврзана листа да ја бабл сортнам. Зошто поѓаволите не ми го сортира и последниот елемент?
пр.
влез : 5 4 3 2 1
излез : 2 3 4 5 1
п.с succ - следен , pred - претходен
 
PHP:
public void bubbleSort(int[] arr) {
      boolean swapped = true;
      int j = 0;
      int tmp;
      while (swapped) {
            swapped = false;
            j++;
            for (int i = 0; i < arr.length - j; i++) {                                 
                  if (arr[i] > arr[i + 1]) {                     
                        tmp = arr[i];
                        arr[i] = arr[i + 1];
                        arr[i + 1] = tmp;
                        swapped = true;
                  }
            }           
      }
}
Нека си направе паралела со кодо за да си ја иссортира листата, и да си оправе линковето откоа заврше со сортирајнето.
 
Е така, нареден пат кога ќе сакаш да помогнеш или кажеш нешто устври кажи..не читаме мисли тука :icon_lol:
 
Ај ќе ве молам мала помош околу оваа задача. Имено,
Дадена е низа со N природни броеви. Треба да се сортира низата така што во првиот дел од низата ќе бидат подредени непарните броеви од неа во растечки редослед, а во вториот дел парните броеви во опаѓачки редослед.
Во првиот ред од влезот даден е бројот на елементи во низата N, а во вториот ред се дадени броевите. На излез треба да се испечати сортираната низа.

Име на класата: OddEvenSort

Имаме и даден код, само треба дел од него да се имплементира:
Код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class OddEvenSort {
 
static void oddEvenSort(int a[], int n)
{
// Vasiot kod tuka
}
 
public static void main(String[] args) throws IOException{
int i;
BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in));
String s = stdin.readLine();
int n = Integer.parseInt(s);
 
s = stdin.readLine();
String [] pom = s.split(" ");
int [] a = new int[n];
for(i=0;i<n;i++)
a=Integer.parseInt(pom);
oddEvenSort(a,n);
for(i=0;i<n-1;i++)
System.out.print(a+" ");
System.out.print(a);
}
}
Пример влез

5
2 5 4 3 6
Пример излез

3 5 6 4 2

За секое решение би ви бил огромно благодарен! :)
 
Ај ќе ве молам мала помош околу оваа задача. Имено,
Дадена е низа со N природни броеви. Треба да се сортира низата така што во првиот дел од низата ќе бидат подредени непарните броеви од неа во растечки редослед, а во вториот дел парните броеви во опаѓачки редослед.
Во првиот ред од влезот даден е бројот на елементи во низата N, а во вториот ред се дадени броевите. На излез треба да се испечати сортираната низа.

.............
Не знам дали смееш да користиш Collections, ама јас така ја решив на брзина,
ако ти помогне еве ја (најверојатно може да има багови, не ја проверив добро.
Ако треба со обични низи. ќе ја досредиме попосле. Сепак и овде ќе можеш да го видиш принципот. Иако мислам дека може да се реши и на полесен и подобар начин, само во моментот немам време да го мислам :P
Имаше мали грешки и во твојот дел од програмата, па ќе го постирам целиот код. Пробај го

Код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
 
public class OddEvenSort {
 
    static void oddEvenSort(int a[], int n) {
        List<Integer> parni = new ArrayList<Integer>();
        List<Integer> neparni = new ArrayList<Integer>();
        for (int i = 0; i < a.length; i++) {
            if (a[i] % 2 == 0) {
                int paren_counter = 0;
                if (parni.isEmpty()) {
                    parni.add(a[i]);
                } else {
                    for (int element : parni) {
                        if (a[i] < element) {
                            paren_counter++;
                           
                        }
                    }
                    parni.add(paren_counter, a[i]);
                }
 
            } else {
                int neparen_counter = 0;
                if (neparni.isEmpty()) {
                    neparni.add(a[i]);
                } else {
                    for (int element : neparni) {
                        if (a[i] > element) {
                            neparen_counter++;
                           
                        }
                    }
                    neparni.add(neparen_counter, a[i]);
                }
            }
        }
        for (int i = 0; i < neparni.size(); i++) {
            a[i] = neparni.get(i);
        }
 
        for (int i = 0; i < parni.size(); i++) {
            a[neparni.size() + i] = parni.get(i);
        }
    }
 
    public static void main(String[] args) throws IOException {
        int i;
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        String s = stdin.readLine();
        int n = Integer.parseInt(s);
 
        s = stdin.readLine();
        String[] pom = s.split(" ");
        int[] a = new int[n];
        for (i = 0; i < n; i++) {
            a[i] = Integer.parseInt(pom[i]);
        }
        oddEvenSort(a, n);
        for (i = 0; i < n; i++) {
            System.out.print(a[i] + " ");
        }
//        System.out.print(a);
    }
}
 
vasko100
Инаку целта е да ги сортираш со некој од алгоритмите за сортирање :)
Затоа прво среди ја лево - десно да има непарни-парни елементи со ова :
Код:
    int j = n-1;
        for(int i = 0; i < n; i++)
        {
            while(a[i] % 2 == 1 && i<n)
                i++;
            while(a[j] % 2 == 0 && j>0)
                j--;
            if(i >=j)
                break;
     
                int tmp = a[i];
                    a[i] = a[j];
                    a[j] = tmp;
     
        }

После користи некој алгоритам што ќе сортира прво лева страна од почеток до последниот непарен број на растечки редослед, после од првиот парен до крај на опаѓачки.
 
Проблемот е поврзан со Nested Classes односно со креирањето на објект од static Inner или само inner објект. Ако може некој да ми ги објасни овие два реда код
Код:
OuterClass.StaticNestedClass nestedObject =
    [B]new OuterClass.StaticNestedClass();[/B]
и
Код:
OuterClass.InnerClass innerObject =outerObject.new InnerClass();

Ме збунува креирањето на објектите од статичната внатрешна класа и од обичната
 
Како може во Netbeans да се чита од стандарден влез?
 
Despod

Не е битно дали од NetBeans или коe IDE..
Можеш на неколку начини.
Со JOptionPane:
Код:
String vlez = JOptionPane.showInputDialog("Vnesi nesto");
Тоа што ќе внесеш се враќа како String, ако имаш потреба од друг податочен тип тогаш кастираш.

Сo Scanner:
Код:
Scanner in = new Scanner(System.in);
int a = in.nextInt();
 
//за текст
//String b = in.nextLine();

Со BufferReader :
Код:
  InputStreamReader strRead = new InputStreamReader(System.in);
    BufferedReader vlez = new BufferedReader(strRead);
    //Може и вака:
    // BufferedReader bfrRead= new BufferedReader(snew InputStreamReader(System.in));
    String s = bfrRead.readLine();
        System.out.println(s);

Ако сакаш да подетално да знаеш што прави InputStreamReader и BufferReader или за другите 2 начини горе барај тука.
 
Фала многу, а дали за вториот код треба да се употреби некоја библиотека?
EDIT: требало да се внеси import java.util.*;


Sent from my Samsung Galaxy S3 using Tapatalk 2
 

Kajgana Shop

Back
На врв Bottom