0 / 0 / 0
Регистрация: 09.06.2017
Сообщений: 3
1

Исследование алгоритмов сортировки методом прямого включения и методом Шелла

09.06.2017, 21:21. Показов 2946. Ответов 10

Author24 — интернет-сервис помощи студентам
Здравствуйте. Мне нужно написать программу в C# на тему "Исследование алгоритмов сортировки методом прямого включения и методом "Шелла". Помоги, пожалуйста, написать...нужна программа и сравнительный анализ этих двух методов.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2017, 21:21
Ответы с готовыми решениями:

Сортировка методом прямого включения
Нашел блок-схему, написал по ней метод сортировки, но, первый элемент в нем не сортируется,...

Сортировка методом прямого включения, исправить код
Сортировка методом прямого включения. using System; using System.Collections.Generic; using...

Сортировка методом обмена и методом быстрой сортировки
Помогите пожалуйста написать программный код метода обмена и метода быстрой сортировки)

Cортировка методом прямого слияния
сортировка методом прямого слияния

10
214 / 210 / 146
Регистрация: 20.11.2014
Сообщений: 1,161
09.06.2017, 21:44 2
что есть, что не получается?
0
0 / 0 / 0
Регистрация: 09.06.2017
Сообщений: 3
09.06.2017, 23:44  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace labwork1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i,j,k;
            int[] myArr = new int[10];
            Console.WriteLine("Введите массив чисел: ");
            for (i = 0; i < 10; i++)
            {
                myArr[i] = int.Parse(Console.ReadLine());
            }
            Console.WriteLine();
            Console.WriteLine("Исходный массив: \n");
            for (i = 0; i < 10; i++)
            {
                Console.Write(myArr[i]);
            }
            for (i = 1; i < myArr.Length; i++)
            {
                k = myArr[i];
                for (j = i - 1; j >= 0 && myArr[j] > k; j--)
                    myArr[j + 1] = myArr[j];
               myArr[j + 1] = k;
            }
try
{
    Console.WriteLine("Отсортированный массив" + myArr[i]);
}
[catch [(тип_исключения имя_исключения)]----а что мне писать здесь??
{
    блок обработки исключения
}]
 
finally
{
     Console.ReadKey();   
        }
    }
}
Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int[] arr = { 1, 5, 3, 6, 2, 4 };
            int step = arr.Length / 2;
            m = 0;
            while (step > 0)
            {
                for (int i = 0; i < (arr.Length - step); i++)
                {
                    int j = i;
                    while ((j >= 0) && (arr[j] > arr[j + step]))
                    {
                        int tmp = arr[j];
                        arr[j] = arr[j + step];
                        arr[j + step] = tmp;
                        j--;
                        m = m + 1;
                    }
                }
                step = step / 2;
            }
            for (int i = 0; i < c.Length; i++)
            {
                Console.Write(arr[i] + " ");
            }
            Console.WriteLine("Количество проходов сортировкой Шелла:" + m);
0
214 / 210 / 146
Регистрация: 20.11.2014
Сообщений: 1,161
10.06.2017, 12:23 4
Лучший ответ Сообщение было отмечено Kristina7398 как решение

Решение

Цитата Сообщение от Kristina7398 Посмотреть сообщение
а что мне писать здесь??
C#
1
2
3
4
catch(Exception e) 
{ 
Console.Write(e.Message); 
}
или
C#
1
2
3
4
catch 
{ 
Console.Write("Ошибка"); 
}
0
0 / 0 / 0
Регистрация: 09.06.2017
Сообщений: 3
11.06.2017, 20:14  [ТС] 5
1 catch
2 {
3 Console.Write("Ошибка");
4 }
0
1 / 1 / 1
Регистрация: 17.05.2013
Сообщений: 146
21.11.2017, 02:21 6
Kristina7398,
bbq,
Не работает в студии код!
0
214 / 210 / 146
Регистрация: 20.11.2014
Сообщений: 1,161
21.11.2017, 13:19 7
Цитата Сообщение от bochik Посмотреть сообщение
Не работает в студии код!
как вы пришли к такому выводу?
0
1 / 1 / 1
Регистрация: 17.05.2013
Сообщений: 146
21.11.2017, 13:25 8
bbq, попробовал у себя. Ошибок кучу выдаёт.
0
214 / 210 / 146
Регистрация: 20.11.2014
Сообщений: 1,161
21.11.2017, 16:11 9
У всех ошибок есть текст, вот и исправляйте их. Или вы хотите чтобы все за вас сделали?
0
1 / 1 / 1
Регистрация: 17.05.2013
Сообщений: 146
21.11.2017, 18:22 10
bbq, ты прав, самому тоже надо думать.... Просто я что-то исправлял-исправлял, так и не получилось....
0
1 / 1 / 1
Регистрация: 17.05.2013
Сообщений: 146
23.11.2017, 20:18 11
Кое-что исправил и добавил:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication6
{
    class Program
    {
        static void newsort( int[] arr)
        {
            for (int i = 1; i < arr.Length; i++)
            {
                int tmp = arr[i];
                int j;
                for (j = i - 1; j >= 0 && arr[j] > tmp; j--)
                    arr[j + 1] = arr[j];
                arr[j + 1] = tmp;
            }
        }
        static void shellSort( int[] arr, ref int time)
        {
            int start =Environment.TickCount;
            int j;
            int step = arr.Length / 2;
            while (step > 0)
            {
                for (int i = 0; i < (arr.Length - step); i++)
                {
                    j = i;
                    while ((j >= 0) && (arr[j] > arr[j + step]))
                    {
                        int tmp = arr[j];
                        arr[j] = arr[j + step];
                        arr[j + step] = tmp;
                        j -= step;
                    }
                }
                step = step / 2;
            }
            time = Environment.TickCount - start;
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Введите размер массива:");
            int m = Convert.ToInt32(Console.ReadLine());
            int[] array = new int[m];
            Random n = new Random();
            Console.Write("Исходный массив: ");
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = n.Next();
                Console.Write("{0} ", array[i]);
            }
            Console.WriteLine();
            int Time=0;
            shellSort( array, ref Time);
            Console.Write("Отсортированный массив по Шеллу: ");
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write("{0} ",array[i]); 
            }
            Console.WriteLine("\nВремя сортировки {0} mc", Time);
            Console.WriteLine("===============");
            Console.ReadLine();
            newsort( array);
            Console.Write("Отсортированный массив методом прямого включения: ");
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write("{0} ", array[i]);
            }
            Console.ReadKey();
        }
       
    }
}
Поставил счётчик, чтоб посчитал, сколько времени тратит программа на сортировку Шелла, с помощью этого:
C#
1
Environment.TickCount
Но почему-то переменная выдаёт в итоге 0 и всё. Подскажите, где ошибка?

Добавлено через 56 минут
Всё нормально, простите!!!
0
23.11.2017, 20:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2017, 20:18
Помогаю со студенческими работами здесь

Отсортировать массив методом прямого выбора
Ввести с консоли массив целых чисел и отсортировать его методом прямого выбора. Вот код: ...

Сортировка методом Шелла из файла csv
Доброе время суток. Пытаюсь сделать сортировку методом Шелла данных из файла csv. При компиляции...

Решение СЛАУ методом простой итерации, Методом Зейделя, Методом Релаксации
Всем доброго времени суток, помогите пожалуйста реализовать данные методы, а то у меня не...

Решить уравнение методом итераций, методом ньютона и методом половинного деления
решить уравнение методом итераций,методом ньютона и методом половинного деления x-1 / (3 + sin...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru