Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Java.doc
Скачиваний:
844
Добавлен:
04.06.2015
Размер:
5.55 Mб
Скачать

Import javax.Swing.*;

Import java.Util.*;

public class JavaApplication6_1 // задание главного класса

{

// описание главного метода main этого класса

public static void main(String[] args)

{

//описание переменных:

Int n, vectorMin, vectorMax, temp;

int i1, i2, i3, m, per;

String input, text;

// вызов диалогового окна ввода исходных данных

input=JOptionPane.showInputDialog("Нижняя граница диапазона vectorMin:");

// преобразование из строкового значения в целое

vectorMin=Integer.parseInt(input);

input=JOptionPane.showInputDialog("Верхняя граница диапазона vectoMax:");

vectorMax=Integer.parseInt(input);

input=JOptionPane.showInputDialog("Размер вектора n:");

n=Integer.parseInt(input);

// формирование строки вывода

text="Значения входных переменных:\nvectorMin=" + vectorMin +

"\nvectorMax=" + vectorMax + "\nn=" + n;

// вызов диалогового окна эхо-печати

JOptionPane.showMessageDialog(null, text);

//консольный вывод

System.out.printf("vectorMin=%d\nvectorMax=%d\nn=%d\n",

VectorMin, vectorMax, n);

// создание вектора длиной n элементов

int vector[]=new int[n];

//консольный вывод

System.out.println("Исходный вектор:");

/*

создание объекта Rand класса Random - генератора случ. чисел

инициализация генератора случайных чисел,

привязка его к системному времени

*/

Random Rand=new Random();

// формирование вектора

for (int i=0; i<n; i++)

{

// получение очередного случайного числа в диапазоне

// от vectorMin до vectorMax

vector[i]=Rand.nextInt(vectorMax-vectorMin+1) + vectorMin

//консольный вывод элемента вектора

System.out.printf(" %5d", vector[i]);

}

System.out.println();

// сортировка вектора методом Шелла

i1=n-1;

while (i1>=1)

{

i1 /= 2;

i2=n-i1-1;

do

{

per=1;

for (int i=0; i<=i2; i++)

{

i3=i+i1;

if (vector[i] > vector[i3])

{

temp=vector[i];

vector[i]=vector[i3];

vector[i3]=temp;

per=0;

} // if (vector[i] > vector[i3])

} // for (i=0; i<=i2; i++)

}while (per==0); // do

} // while (i1>=1)

System.out.println("Отсортированный вектор:");

//консольный вывод вектора

for (int i=0; i<n; i++)

System.out.printf(" %5d", vector[i]);

System.out.println();

}

}

В окне вывода появится:

vectorMin=-10

vectorMax=10

n=10

Исходный вектор:

1 -1 2 8 6 0 -9 9 -5 4

Отсортированный вектор:

-9 -5 -1 0 1 2 4 6 8 9