пузырьковая сортировка между двумя списками без сортировки и сортировкой c# - PullRequest
0 голосов
/ 15 апреля 2020

Я создал форму с двумя списками (не отсортированными и отсортированными), когда я нажимаю кнопку пузырьковой сортировки, она появляется в списке не отсортированных, но теперь я хочу нажать другую кнопку, например, для сортировки, и сортирует их в правильном порядке в отсортированный список и очищает несортированный список.

Я новичок в программировании, поэтому мне очень трудно разобраться с кодированием. Я гуглил то, что мне нужно, но не могу найти определенный ответ.

код, который у меня есть, приведен ниже:

Это добавляет его в мой несортированный список:

int[] myNumbers = { 5, 1, 8, 9, 15 };

lstunsorted.Items.Add(5);
lstunsorted.Items.Add(1);
lstunsorted.Items.Add(8);
lstunsorted.Items.Add(9);
lstunsorted.Items.Add(15); 

Это то, что я имею под кнопкой сортировки, чтобы перемещать их и сортировать:

        for (int intCount = lstunsorted.SelectedItems.Count - 1; intCount >= 0; intCount--)
        {
            lstsorted.Items.Add(lstunsorted.SelectedItems[intCount]);
            lstunsorted.Items.Remove(lstunsorted.SelectedItems[intCount]);
        }

        int[] arr = { 5, 1, 8, 9, 15 };
        int temp = 0;
        for (int i = 0; i < arr.Length; i++)
        {
        for (int J = 0; J < arr.Length; J++)
        {
        if (arr[i] > arr[J])
        {
                        temp = arr[i];

                        arr[i] = arr[J];

                        arr[J] = temp;
                    }
                }
            }

любая помощь будет принята с благодарностью и объяснена в формат для начинающих, чтобы я мог понять, что происходит.

1 Ответ

0 голосов
/ 15 апреля 2020

ListBox.Items - это нетипизированная коллекция, означающая, что вы можете добавить к ней любое значение, string, int, что угодно. Это делает его довольно громоздким для работы, поэтому первым шагом должно быть преобразование его в обычный массив или список.

var myArray =  lstunsorted.Items.Cast<int>().ToArray();

.Cast<int>() переводит каждый элемент списка в int. Это будет работать только в том случае, если элементы действительно целые, но в вашем случае это нормально (см. .OfType<T>() в противном случае). .ToArray() берет все значения и помещает их в новый массив.

Затем вы сортируете элементы, и я предполагаю, что в этом смысл упражнения. Если нет, то это можно сделать с помощью

Array.Sort(myArray );

Последний шаг - обновить список.

lstsorted.Items.Clear();
foreach(var i in myArray )
{
    lstsorted.Items.Add(i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...