/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package selectionsortapp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
import java.lang.Math;
public class SelectionSortApp
{
public static void main(String[] args) throws IOException
{
int i;
int c = Integer.parseInt(getInput());
int a[] = new int [c];
Random rand = new Random();
/*
* 0 - zamiany
* 1 - porownania
* */
int[] wyniki = new int[2];
SelactioSort h = new SelactioSort(wyniki, c);
for ( i=0; i< c; i++)
{
int r = rand.nextInt(255);
h.insert(r); // dodaj r do kopca
}
a = h.getTablica();
System.out.println("Nieposortowana tablica ");
for (i = 0; i < a.length; i++)
System.out.print(" "+a[i]);
h.Sort();
System.out.println("\nposortowana tablica");
for (i = 0; i < a.length; i++)
System.out.print(" "+a[i]);
// zlozonosc jest dziwnie wyliczana, bo maleje wraz ze wzrostem
System.out.println("\nZamiany: " + wyniki[0]+ ", porownania: " +wyniki[1]+ ", zlozonosc: "+ wyniki[0]/((c*(Math.log(c))/Math.log(2))) + "\n");// złozonsc
}
public static String getInput()
{
try
{
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
String s = bufferRead.readLine();
return s;
}
catch(IOException e)
{
e.printStackTrace();
return "";
}
}
\\\------------------------------------------------------------------------------------------------------------------
package selectionsortapp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
import java.lang.Math;
class SelactioSort
{
private int[] a; // referencja do tablicy
private int nElems; // licznik elementów
public int porow, przes;
private int[] wyniki;
//--------------------------------------------------------------
public SelactioSort(int[] wyniki, int rozmiar) // konstruktor
{
this.wyniki = wyniki; // przypisuje referencje do 'wyniki' z metody main
//a = tablica; // tablica do posortowania
nElems = rozmiar;
a = new int[nElems];
}
public int[] getTablica()
{
return a;
}
//--------------------------------------------------------------
public void insert(int value) // wstawienie elementu do tablicy
{
a[nElems] = value; // wstawiamy element
nElems++; // zwiększamy licznik elementów
}
//--------------------------------------------------------------
public void display() // wypisuje zawartość tablicy
{
for(int j=0; j<nElems; j++) // dla każdego elementu...
{ System.out.print(a[j] + " "); // ...wypisujemy jego wartość
if ((j+1) % 10 == 0) // po 10 elementow w wierszu
System.out.println("");
}
System.out.println("");
}
//--------------------------------------------------------------
public void bubbleSort()
{
int out, in;
for(out=nElems-1; out>=1; out--) // pętla zewnętrzna (malejąca)
for(in=0; in<out; in++) // pętla wewnętrzna (rosnąca)
{
porow ++; // zwiększa liczbę porównań
if( a[in] > a[in+1] ) // zła kolejność?
swap(in, in+1); } // no to zamiana
} // koniec bubbleSort()
//--------------------------------------------------------------
private void swap(int one, int two)
{
int temp = a[one];
a[one] = a[two];
a[two] = temp;
przes ++;
}
//--------------------------------------------------------------
public void Sort()
{
int out, in, min;
for(out=0; out<nElems-1; out++) // pętla zewnętrzna
{
min = out; // indeks minimum
for(in=out+1; in<nElems; in++) // pętla wewnętrzna
{ porow ++; // zwiększa liczbę porównań
if(a[in] < a[min] ) // jeżeli min większe...
min = in; // ...mamy nowe minimum
}
swap(out, min); // zamiana
} // koniec pętli zewnętrznej
} // koniec selectionSort()
} // koniec klasy arraySort
}
Mam taki błąd co jest może nie tak
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at selectionsortapp.SelactioSort.insert(SelactioSort.java:34)
at selectionsortapp.SelectionSortApp.main(SelectionSortApp.java:41)
Java Result: 1