воскресенье, 4 января 2015 г.

Сортировка выборкой

Data Structures and Algorithms in Java, Robert Lafore, стр 89

Хорошая сортировка для больших записей.

Алгоритм:

1. Обменять первое значение с минимальным.
2. Сдвинуться на следующую позицию.
3. Обменять второе значение с минимальным. (Стоящим после второй позиции)
4. Сдвинуться на следующее значение.

class ArraySel
{
private long[] a;
private int nElements;

public ArraySel (int max)
{
a = new long [max];
nElements = 0;

}

public void insert (long value)
{
a[nElements]=value;
nElements++;
}

public void display()
{
for (int i = 0; i < nElements; i++) {
System.out.println(a[i]+" ");
System.out.println("");
}
}


public void selectionSort()
{
int out,in, min;

for(out=0; out<nElements-1; out++) // outer loop
{
min = out; // minimum
for(in=out+1; in<nElements; in++) // inner loop
if(a[in] < a[min] ) // if min greater,
min = in; // we have a new min
swap(out, min); // swap them
} // end for(out)
}


private void swap (int one, int two)
{
long temp = a[one];

a[one] = a[two];
a[two] =temp;

}


}




public class Selection {
public static void main(String[] args){

int maxSize = 100;

ArraySel arr;
arr = new ArraySel(maxSize);

arr.insert(52);
arr.insert(56);
arr.insert(23);
arr.insert(26);
arr.insert(59);
arr.insert(56);

arr.display();

arr.selectionSort();

System.out.println("-----------------");


arr.display();

}

}

Комментариев нет:

Отправить комментарий