[WPF] 공공데이터 포털 API 이용 클라이언트 구현 Part 3

이미지
그룹핑 ListViewItem 그룹핑 할 수 있습니다. 먼저 CheckBox에 Checked 이벤트를 통해 그룹핑을 추가하고 RemoveChecked 이벤트를 통해 그룹핑을 제거 할 수 있도록 CheckBox를 선언 합니다. 1: <!-- Group CheckBox --> 2: <CheckBox Grid.Column="0" 3: Grid.Row="0" 4: Checked="AddGrouping" 5: Unchecked="RemoveGrouping">Group by Name</CheckBox> 그룹 스타일 선언 GroupStyle 속성에 ContainerStyle 속성을 이용해 Style을 지정 합니다. Expander 컨트롤을 이용해 아파트명과 그룹 아이템의 개수를 Expander Header에 표시 하도록 ControlTemlate를 선언 합니다. 1: <!-- Group Style --> 2: <ListView.GroupStyle> 3: <GroupStyle> 4: <GroupStyle.ContainerStyle> 5: <Style TargetType="{x:Type GroupItem}"> 6: <Setter Property="Margin" Value="0,0,0,5" /> 7: <Setter Property="Te...

[알고리즘] 버블 정렬, 선택 정렬, 삽입 정렬

-버블 정렬
1:  /// <summary>  
2:      /// 버블 정렬로 정렬 합니다.  
3:      /// </summary>  
4:      public void BubbleSort()  
5:      {  
6:        // 배열의 마지막 인덱스   
7:        int index = count - 1;  
8:        // 정렬이 정렬 여부  
9:        bool sorted = false;  
10:    
11:        // 정렬이 완료 될 때 까지 실행  
12:        while (!sorted)  
13:        {  
14:          sorted = true;  
15:    
16:          // 배열의 첫 인덱스 부터 정렬이 않은 인덱스까지 반복  
17:          for (int i = 0; i < index; i++)  
18:          {  
19:            // 인접한 값 쌍을 비교하고 순서가 뒤바뀌어 있으면 교환  
20:            if (arr[i] > arr[i + 1])  
21:            {  
22:              sorted = false;  
23:              int prevData = arr[i];  
24:              arr[i] = arr[i + 1];  
25:              arr[i + 1] = prevData;  
26:            }  
27:          }  
28:    
29:          // 패스스루를 하나 완료했으면 오른쪽으로 올려준 값(버블)이 정렬 되었다는 것을 확신  
30:          // 기존에 가르키고 있던 인덱스가 정렬된 상태이므로 index 값을 1 감소 시킨다.  
31:          index = index - 1;  
32:        }  
33:      }  


- 선택 정렬

1:  /// <summary>  
2:      /// 선택 정렬 알고리즘을 이용해 정렬 합니다.  
3:      /// </summary>  
4:      public void SelectSort()  
5:      {  
6:        for (int i = 0; i < count; i++)  
7:        {  
8:          // 최소값이 저장되어 있는 인덱스 지정  
9:          int lowerIndex = i;  
10:    
11:          for (int j = i + 1; j < count; j++)  
12:          {  
13:            // 가장 작은 값이 들어있는 인덱스를 찾는다.  
14:            if (arr[i] > arr[j])  
15:            {  
16:              lowerIndex = j;  
17:            }  
18:          }  
19:    
20:          // 가장 작업이 발견 되었다면 값을 교환한다.  
21:          if (lowerIndex != i)  
22:          {  
23:            int prevData = arr[i];  
24:            arr[i] = arr[lowerIndex];  
25:            arr[lowerIndex] = prevData;  
26:          }  
27:            
28:        }  
29:      }  


- 삽입 정렬
1:  /// <summary>  
2:      /// 삽입 정렬 알고리즘을 이용해 정렬 합니다.  
3:      /// </summary>  
4:      public void InsertionSort()  
5:      {  
6:        // 인덱스 1부터 시작해 배열을 순회하는 루프  
7:        for (int i = 1; i < count; i++)  
8:        {  
9:    
10:          int position = i;  
11:          int temp_value = arr[i];  
12:    
13:          // positon의 왼쪽에 있는 값이 temp_value보다 큰지 확인  
14:          while (position > 0 && arr[position - 1] > temp_value)  
15:          {  
16:            // 왼쪽 값을 오른쪽으로 옮긴다  
17:            arr[position] = arr[position - 1];  
18:            // 다음 값 비교를 위해 positon을 1 감소  
19:            position--;  
20:          }  
21:    
22:          // temp_value 값을 배열의 공백에 삽입  
23:          arr[position] = temp_value;  
24:        }  
25:      }  


댓글

이 블로그의 인기 게시물

[C#] Task 완료 시 다른 Task를 자동으로 수행

[C#] 태스크(Task)가 완료될 때 까지 대기하여 결과를 얻는 방법

[C#] 명시적으로 Task 생성 및 실행