2009-10-15 3 views
0

일부 정렬 항목이 동일 할 때 비교 결과가 일관된 결과를 얻을 수있는 방법이 있습니까? 내 자신의 정렬 루틴을 코딩해야합니까?비교 동일한 키에 대한 위임자 플립 플롭 결과

public class Sorter 
{ 
    public void SortIt() 
    { 
     var myData = new List<SortData>(3); 
     myData.Add(new SortData { SortBy = 1, Data = "D1"}); 
     myData.Add(new SortData { SortBy = 1, Data = "D2" }); 
     myData.Add(new SortData { SortBy = 2, Data = "D3" }); 

     myData.Sort(new Comparison<SortData>((a, b) => a.SortBy.CompareTo(b.SortBy))); 
     ShowResults(myData); 
     myData.Sort(new Comparison<SortData>((a, b) => a.SortBy.CompareTo(b.SortBy))); 
     ShowResults(myData); 
     myData.Sort(new Comparison<SortData>((a, b) => a.SortBy.CompareTo(b.SortBy))); 
     ShowResults(myData); 
    } 

    private void ShowResults(IEnumerable<SortData> myData) 
    { 
     foreach (var data in myData) 
     { 
      Console.WriteLine(data.SortBy + " " + data.Data); 
     } 
     Console.WriteLine("\n"); 
    } 
} 

public class SortData 
{ 
    public int SortBy { get; set; } 
    public string Data { get; set; } 
} 
enter code here 

이제 결과가 무엇인지주의 사항 :

1 D2
1 D1
2 D3

1 D1
1 D2
2 D3

1 D2를
1 D1
2 D3

처음 두 항목이 얼마나 일관성 있고 오랫동안 정렬되어 있는지는 신경 쓰지 않습니다! 플립 플롭을 유지합니다.

답변

2

는 기본적으로 예 :. http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx

이 방법은 가 된 Quicksort 알고리즘을 사용 .. :: 정렬, 배열을 사용합니다. 이 구현은 불안정한 정렬을 수행합니다. 즉, 두 개의 요소가 인 경우 해당 순서는 이 아닐 수 있습니다. 대조적으로, 안정적인 정렬은 동일한 요소 인 의 순서를 유지합니다.

안정적인 정렬을 원한다면 다른 곳을 보거나 자신을 굴릴 수 있습니다.

관련 문제