2013-04-08 4 views
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"); 

    } 
+0

어쩌면의 중복 http://stackoverflow.com/questions/3667088/sorting-a-list-of-items-in-a-list- 상자 – gorgi93

+0

잘 작동하지 않습니다. 이 코드는 올바른 문자로 쓰여졌 기 때문에 – gorgi93

+0

알파벳순으로 숫자를 정렬하고 싶습니까? –

답변

0

정확하게 이해하면 문자열을 정렬하려고합니다. 문자열을 비교하려면 단순히 String.CompareTo() 메서드를 사용하거나 간단한 비교 이외의 다른 방법이 필요한 경우 대부분의 사용 사례에서 StringComparator class을 사용해야합니다.

당신이이 방법을 선택하면, 조건 정렬하는 동안은 다음과 같이 될 것이다 다음 int[]에 변화 과정을 제외하고

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

그리고 아마 거의 동일있을 것입니다 코드의 나머지 부분, String[].

이제는 List<String>을 사용하고이 작업을 모두 손으로 건너 뛰는 것이 좋습니다. 참조 용으로 을 참조하십시오.

좀 더 구체적으로 말씀 드리면, 제가 의미하는 코드에 기반한 예가 있습니다.

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

    } 
} 
+0

'ExchangeSort()'메소드에서'if (array [i]

+0

고마워요. int를 문자열로 바꾸는 걸 잊어 버린 것 같습니다. –

2

당신은 LINQ를 시도 할 수 :

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