Другие языки программирования и технологии

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

Имеется целочисленный массив ak сщстоящий из 17 элементов: 10, -7, 3, 4, 111, -45, 0, 1234, 52, 77, 23, -675, 1, 20934, 12, -89, 555
1. Вывести значения на экран
2. Используя void shellsort(int v[], int n) вывести элементы в возрастающем порядке
3. Используя int binsearch(int x, int v[], int n) найти индекс элемента в отсортированном массиве, значение которого 111. Программа должна попросить ввести это значение.
Спасибо!
Ruslan Turashev
Ruslan Turashev
95
и в чем проблема ?
Михаил Золотов
Михаил Золотов
1 911
Лучший ответ
//Rextester.Program.Main is the entry point for your code. Don't change it.
//Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
public class Program
{
static void PrintArray(int[] array)
{
int n = array.Count();
for (int i = 0; i < n; i++)
Console.Write(array[i] + " ");
}
static int[] ShellSort(int[] a)//код позаимствован с сайта http://cybern.ru/sortirovka-shella-cpp.html
{
int size = a.Count();
int step = (int) size / 2;
while (step > 0)//пока шаг не 0
{
for (int i = 0; i < (size - step); i++)
{
int j = i;
//будем идти начиная с i-го элемента
while (j >= 0 && a[j] > a[j + step])
//пока не пришли к началу массива
//и пока рассматриваемый элемент больше
//чем элемент находящийся на расстоянии шага
{
//меняем их местами
int temp = a[j];
a[j] = a[j + step];
a[j + step] = temp;
j--;
}
}
step = step / 2;//уменьшаем шаг
}
return a;
}
static int binsearch(int val, int[] array)
{
for (int i = 0; i < array.Count(); i++)
if (array[i] == val) return i;
return -1;
}

public static void Main(string[] args)
{
int[] arr = {10, -7, 3, 4, 111, -45, 0, 1234, 52, 77, 23, -675, 1, 20934, 12, -89, 555};
Console.Write("Дан массив: ");
PrintArray(arr);
Console.Write("\nСортировка Шелла: ");
PrintArray(ShellSort(arr));
Console.Write("\nИндекс элемента со значением 111: {0}", binsearch(111, arr));

}
}
}

http://rextester.com/HICUP49766
Maksat Kuralov
Maksat Kuralov
22 714