Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужна помощь в сортировке коллекции / 7 сообщений из 7, страница 1 из 1
29.02.2020, 13:12
    #39932504
Нужна помощь в сортировке коллекции
Имеется Массив данных List(Of T)
Нужно сортировать коллекцию таким образом:

0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,9,8
0,1,2,3,4,5,6,8,7,9
0,1,2,3,4,5,6,8,9,7
.......
9,8,7,6,5,4,3,2,1,0

где 0,1,2,3,4,5,6,7,8,9 это индексы массива.

Коллекция может быть любого размера.
Как это реализовать?
...
Рейтинг: 0 / 0
29.02.2020, 13:26
    #39932510
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в сортировке коллекции
То есть на входе есть массив, а на выходе нужно получить массив массивов, правильно я понял?
...
Рейтинг: 0 / 0
29.02.2020, 13:36
    #39932511
Нужна помощь в сортировке коллекции
Shocker.Pro, да получается
...
Рейтинг: 0 / 0
29.02.2020, 14:07
    #39932513
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в сортировке коллекции
...
Рейтинг: 0 / 0
29.02.2020, 14:50
    #39932520
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в сортировке коллекции
нормально требуемый алгоритм сортировки опишите,
...
Рейтинг: 0 / 0
29.02.2020, 14:53
    #39932521
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в сортировке коллекции
Roman Mejtes
нормально требуемый алгоритм сортировки опишите,
Как я понял, если по-русски, ТС нужно получить последовательность всех перестановок в массиве, отсортированную по возрастанию "номиналов" индексов.
...
Рейтинг: 0 / 0
01.03.2020, 12:21
    #39932642
Нужна помощь в сортировке коллекции
Спасибо за помощь. Нашёл код на VBA и переделал на vb.net:

Код: vbnet
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.
Class Перестановка
    Inherits List(Of List(Of Integer))
    Dim a() As Integer
    Private Sub New(ByVal n As Integer)
        ReDim a(0 To n - 1) : For j = 0 To n - 1 : a(j) = j + 1 : Next j
        Do
            Me.Add(a.ToList)
        Loop Until Перестановка(n) = 0
    End Sub
    Function Перестановка(ByVal n As Integer) As Integer
        Dim i As Integer, k As Integer, t As Integer, tmp As Integer
        k = n - 2
        Do While k >= 0
            If a(k) < a(k + 1) Then Exit Do
            k -= 1
        Loop
        If k = -1 Then
            Return 0
            Exit Function
        End If
        t = n - 1
        Do While t >= k + 1 And a(k) >= a(t)
            t -= 1
        Loop
        tmp = a(k) : a(k) = a(t) : a(t) = tmp
        For i = k + 1 To (n + k) \ 2
            t = n + k - i
            tmp = a(i) : a(i) = a(t) : a(t) = tmp
        Next i
        Return i
    End Function

    Dim Сорт As Integer = 0
    Private Function СортироватьТаблицу(ByVal Таб As Таблица) As Boolean
        Dim Группа = From z In Таб.Строки Order By z.Заказ Ascending Group By z.Заказ Into Count()
        Dim Сч As Integer = -1
        For Each Item In Группа
            Сч += 1
            Dim Заказ As Integer = Item.Заказ
            Dim НовыйID As Integer = Me.Item(Сорт)(Сч)
            Dim s As List(Of Таблица.Строка) = Таб.Строка.FindAll(Function(x) x.Заказ = Заказ)
            For Each Item2 In s
                Item2.Пачка = НовыйID
            Next
        Next
        Сорт += 1
        If Сорт < КолГрупп.Count Then
            Return True
        Else
            Сорт = 0
            Return False
        End If
    End Function
End Class
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужна помощь в сортировке коллекции / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]