Java

M

Mr.InF3ction

Гостин
Грејвдигер
Ај ќе се обидам со слики да објаснам :
Значи да предпоставиме дека веќе има некоја листа со 3 елементи и изгледа вака :



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


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


И се што правиш е со first = ins e кажуваш дека почетокот на листата е новиот јазел.
 
L

Luki Junior

Гостин
Тава е linked list, така ли?
Ако е да, Инфекшн го е објаснил. Требе да експлицитно да референснеш кој е новио почеток, иначе нема да може да ги посетува новите членови на низата.
 
Г

Грејвдигер

Гостин
Да, да, сфаќам. Малку се збунив, пошто first го сметав како јазол што прв се креира, не дека со него се бележи најпрвиот јазол во целата листа. Јасно е сега. :) Фала Mr.InF3ction, имаш пиво у бифе :icon_lol:
 
Член од
27 ноември 2008
Мислења
1.433
Поени од реакции
341
Код:
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 - претходен
 
L

Luki Junior

Гостин
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;
                  }
            }           
      }
}
Нека си направе паралела со кодо за да си ја иссортира листата, и да си оправе линковето откоа заврше со сортирајнето.
 
M

Mr.InF3ction

Гостин
Е така, нареден пат кога ќе сакаш да помогнеш или кажеш нешто устври кажи..не читаме мисли тука :icon_lol:
 
Член од
29 август 2008
Мислења
43
Поени од реакции
25
Ај ќе ве молам мала помош околу оваа задача. Имено,
Дадена е низа со 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

За секое решение би ви бил огромно благодарен! :)
 
Член од
8 октомври 2007
Мислења
4.680
Поени од реакции
8.511
Ај ќе ве молам мала помош околу оваа задача. Имено,
Дадена е низа со 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);
    }
}
 
M

Mr.InF3ction

Гостин
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;
     
        }
После користи некој алгоритам што ќе сортира прво лева страна од почеток до последниот непарен број на растечки редослед, после од првиот парен до крај на опаѓачки.
 
Член од
25 март 2012
Мислења
40
Поени од реакции
6
Проблемот е поврзан со Nested Classes односно со креирањето на објект од static Inner или само inner објект. Ако може некој да ми ги објасни овие два реда код
Код:
OuterClass.StaticNestedClass nestedObject =
    [B]new OuterClass.StaticNestedClass();[/B]
и
Код:
OuterClass.InnerClass innerObject =outerObject.new InnerClass();
Ме збунува креирањето на објектите од статичната внатрешна класа и од обичната
 
Член од
8 октомври 2011
Мислења
65
Поени од реакции
48
Како може во Netbeans да се чита од стандарден влез?
 
M

Mr.InF3ction

Гостин
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 начини горе барај тука.
 
Член од
8 октомври 2011
Мислења
65
Поени од реакции
48
Фала многу, а дали за вториот код треба да се употреби некоја библиотека?
EDIT: требало да се внеси import java.util.*;


Sent from my Samsung Galaxy S3 using Tapatalk 2
 

Kajgana Shop

На врв Bottom