Реферат Курсовая Конспект
Вывод элементов массива на консоль - раздел Образование, Сортировка, пирамидальная сортировка. Параметры задачи: размер последовательности, длина строки. Мера сравнения: число обменов, число сравнений, Время выполнения. Void Arrayoutput(Int* Arr, Int Start, Int N) ...
|
void ArrayOutput(int* Arr, int Start, int N)
{
for (int i = Start; i < N; i++)
{
cout << Arr[i] << 'n';
}
getch();
}
Код программы на языке программирования С#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SortLab
{
class Program
{
static void Main()
{
Sort();
}
/*Основная программа*/
static void Sort()
{
int[] myint = { 99,88,77,66,55,44,33,22,11,8,5,3,1};
WriteArray(myint);
ShakerSort(myint);
WriteArray(myint);
Console.ReadLine();
}
/* Шейкер-сортировка */
static void ShakerSort(int[] myint)
{
int beg, end;
int count = 0;
for (int i = 0; i < myint.Length/2; i++) //можно переберать за кол-во итераций, в 2 раза меньше
{ //целочисленное деление округляет в меньшую сторону
beg = 0;
end = myint.Length - 1;
do
{
count += 2;
/* идем спереди */
if (myint[beg] > myint[beg + 1])
Swap(myint,beg,beg+1);
beg++;//сдвигаем позицию вперед
/* идем сзади */
if (myint[end-1] > myint[end])
Swap(myint, end - 1, end);
end--;//сдвигаем позицию назад
}
while (beg <= end);// условия усреднения
}
Console.Write("nКоличество сравнений = {0}n",count);
}
/* Поменять элементы местами */
static void Swap(int[] myint, int i, int j)
{
int glass;
glass = myint[i];
myint[i] = myint[j];
myint[j] = glass;
}
/*Вывести массив*/
static void WriteArray(int[] a)
{
foreach (int i in a)
Console.Write("{0}|", i);
Console.WriteLine("nnn");
}
}
}
Образно алгоритм можно описать так: на каждом шаге основного цикла рассматривается массив a[Left]÷a[Right], после выполнения двух внутренних циклов минимальный и максимальный элемент в исходном массиве перетекают к краям, минимальный в — a[Left], максимальный — в a[Right]. Пусть максимальный элемент имеет индекс k, тогда массив можно изобразить так: a[Left],a[1],..,a[k-1],A[k],a[k+1],..,a[Right];После сравнения A[k] с a[k+1] значение A[k] перейдет в k+1-ую ячейку,после сравнения k+1-ой c k+2-ой – в k+2-eю,и так далее,пока он не сместится в крайне правое положение с индексом Right. Аналогично для минимального. После выполнения цикла по всем подмассивам он отсортируется. Трассировка программы:
3 1 5 8 1 0 4 6 6 7
3 1 5 8 0 1 4 6 6 7
3 1 5 0 8 1 4 6 6 7
3 1 0 5 8 1 4 6 6 7
3 0 1 5 8 1 4 6 6 7
0 3 1 5 8 1 4 6 6 7 Left=1
0 1 3 5 8 1 4 6 6 7
0 1 3 5 1 8 4 6 6 7
0 1 3 5 1 4 8 6 6 7
0 1 3 5 1 4 6 8 6 7
0 1 3 5 1 4 6 6 8 7
0 1 3 5 1 4 6 6 7 8 Right=8
0 1 3 1 5 4 6 6 7 8
0 1 1 3 5 4 6 6 7 8 Left=3
0 1 1 3 4 5 6 6 7 8
– Конец работы –
Эта тема принадлежит разделу:
Сортировка пирамидальная сортировка Параметры задачи размер... последовательности длина строки Мера сравнения число обменов число... Время выполнения Пирамидальная сортировка Пирамидальная...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Вывод элементов массива на консоль
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов