Сортировка выделения в ListBox

Я хочу создать программу на C #, которая вводит данные из блокнота, который содержит числа, а затем помещает его в первый список. Затем у меня есть второй список, в котором я хочу показать данные из первого списка, которые сортируются с помощью алгоритма SELECTION SORT. Как я могу этого добиться? Это код, который я написал до сих пор:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Sorting
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        static void selectionSort(int[] list, int n)
        {
        int i, j;
        for (i = 0; i < n; i++)
        {
            int min = i;
            for (j = i + 1; j < n; j++)
                if (list[j] < list[min])
                {
                    min = j;
                }
            int temp = list[i];
            list[i] = list[min];
            list[min] = temp;
        }   

    private void btn_open_Click(object sender, EventArgs e)
    {
        string name;
        openFileDialog1.Filter = "Text File (*.txt) | *.txt";
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            name = openFileDialog1.FileName;
            listBox1.Items.AddRange(File.ReadAllLines(name));
        }
    }


    private void btn_sort_Click(object sender, EventArgs e)
    {
        int[] list = new int[listBox1.Items.Count];
        for (int a = 0; a < listBox1.Items.Count; a++)
        {
            try
            {
                list[a] = int.Parse(listBox1.Items[a].ToString());
            }

            catch
            {
                DialogResult Text = MessageBox.Show("The data types is not number..", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                break;
            }

            selectionSort(list, listBox1.Items.Count);

        }
        for (int i = 0; i < listBox1.Items.Count-1; i++)
        {
             listBox2.Items.Add(list[i]);
        }                

        }
    }
}

Но с сортировкой не сработало .. В чем проблема с моим кодом?


person yolo    schedule 15.04.2015    source источник
comment
Не сработало - это не описание проблемы.   -  person John Saunders    schedule 15.04.2015
comment
@JohnSaunders У меня есть данные: 7,9,4,6,2, но когда я нажимаю кнопку сортировки, получается 0,0,2,4 .. Так в чем, по-вашему, проблема?   -  person yolo    schedule 15.04.2015
comment
Думаю, проблема в том, что вы не отладили свое приложение.   -  person John Saunders    schedule 15.04.2015


Ответы (1)


Если вы хотите просто отсортировать:

ListBox lb1 = new ListBox();
ListBox lb2 = new ListBox();
var lb1Items = lb1.Items.Cast<int>().ToList();
lb1Items.Sort();
lb2.DataSource = list;
person Josh L.    schedule 15.04.2015