修改排序算法列表框的工作?(Modify sorting algorithm to work wit

2019-10-29 07:53发布

所以我试图找出修改这个整的排序算法与数据元素(文件名)按字母顺序在列表框工作,但不知道如何?

我了解以下工程和排序算法可以用一个整数数组实现它。 然而,对于列表框我似乎无法在网络上找到任何相关的例子。

public partial class MainWindow : Window
{

    Random rand = new Random();
    int numOfIntegers = 1000;
    int[] array;

    public MainWindow()
    {

        InitializeComponent();

        array = new int[numOfIntegers]; 

    }


    // sort a vector of type int using exchange sort
    public void ExchangeSort(int[] array)
    {
        int pass, i, n = array.Length;
        int temp;
        // make n-1 passes through the data 
        for (pass = 0; pass < n - 1; pass++)
        {
            // locate least of array[pass] ... array[n - 1]  
            // at array[pass] 
            for (i = pass + 1; i < n; i++)
            {
                if (array[i] < array[pass])
                {
                    temp = array[pass];
                    array[pass] = array[i];
                    array[i] = temp;
                }
            }
        }
    }

    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        ExchangeSort(array);
        listBox.Items.Clear();
        foreach (int i in array)
        {
            listBox.Items.Add(i);
        }
        MessageBox.Show("Done");

    }

Answer 1:

您可以尝试LINQ:

public void sort(int[] array)
{
    array = array.OrderByDescending (a => a).ToArray();
}


Answer 2:

如果我理解正确的话,你想串排序。 比较字符串,你可以简单地使用String.CompareTo()方法,或者如果你需要的不仅仅是简单的比较多, StringComparator类应为大多数使用情况做。

如果你选择做这种方式,而分类的条件将是这样的:

if (array[i].CompareTo(array[pass]) < 0)

而其余代码可能会维持不变,当然除了改变int[]String[]

现在,他这样说,我会建议使用List<String> ,只是跳过手工完全做好这项工作。 见List.Sort()以供参考。

更具体一点,下面是根据你的我的意思代码的例子。

public partial class MainWindow : Window
{
    List<String> items;

    public MainWindow()
    {

        InitializeComponent();
        items = new List<String>(); 
        // Fill your list with whatever items you need
    }

    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        items.Sort();
        listBox.Items.Clear();
        foreach (String str in items)
        {
            listBox.Items.Add(str);
        }
        MessageBox.Show("Done");

    }
}


文章来源: Modify sorting algorithm to work with listboxes?
标签: c# sorting names