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();
}
}
Комментариев нет:
Отправить комментарий