0

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

我了解下面的排序算法是如何工作的,并且可以使用整数数组来实现它。但是,对于 listBoxes,我似乎在网上找不到任何相关示例。

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");

    }
4

2 回答 2

2

你可以试试 LINQ:

public void sort(int[] array)
{
    array = array.OrderByDescending (a => a).ToArray();
}
于 2013-04-08T00:49:02.760 回答
0

如果我理解正确,您正在尝试对字符串进行排序。要比较字符串,您可以简单地使用该String.CompareTo()方法,或者如果您需要的不仅仅是简单比较,StringComparator该类应该适用于大多数用例。

如果您选择这样做,排序时的条件将是这样的:

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

其余代码可能保持不变,当然除了int[]String[].

现在,话虽如此,我建议使用 aList<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");

    }
}
于 2013-04-08T00:44:42.187 回答