排序算法
01 /// <SUMMARY>
02 /// 冒泡排序
03 /// </SUMMARY>
04 public void BubbleSort(int[] sortItems)
05 {
06 for (int i = 0; i < sortItems.Length; i++)
07 {
08 for (int j = sortItems.Length - 2; j >= i; j--)
09 {
10 if (sortItems[j + 1] < sortItems[j])
11 {
12 //--------- 实现交换 ---------
13 int temp = sortItems[j];
14 sortItems[j] = sortItems[j + 1];
15 sortItems[j + 1] = temp;
16 //--------- 实现交换 ---------
17 }
18 }
19 }
20 }
view sourceprint?01 /// <SUMMARY>
02 /// 冒泡排序(优化版)
03 /// </SUMMARY>
04 public void BubbleSortImproved(int[] sortItems)
05 {
06 int i, j, temp;
07 bool flag = true;
08 i = 0;
09 while (i < sortItems.Length && flag)
10 {
11 flag = false;
12 for (j = sortItems.Length - 2; j >= i; j--)
13 {
14 if (sortItems[j + 1] < sortItems[j])
15 {
16 //--------- 实现交换 ---------
17 temp = sortItems[j];
18 sortItems[j] = sortItems[j + 1];
19 sortItems[j + 1] = temp;
20 //--------- 实现交换 ---------
21 flag = true; //有数据交换,flag设为true;
22 }
23 }
24 i++;
25 }
26 }
view sourceprint?01 /// <SUMMARY>
02 /// 简单选择排序
03 /// </SUMMARY>
04 public void SimpleSelectionSort(int[] sortItems)
05 {
06 int i, j, min, temp;
07 for (i = 0; i < sortItems.Length; i++)
08 {
09 min = i;
10 for (j = i + 1; j < sortItems.Length; j++)
11 {
12 if (sortItems[min] > sortItems[j])
13 {
14 min = j;
15 }
16 }
17 temp = sortItems[min];
18 sortItems[min] = sortItems[i];
19 sortItems[i] = temp;
20 }
21 }
view sourceprint?01 /// <SUMMARY>
02 /// 直接插入排序
03 /// </SUMMARY>
04 public void StraightInsertionSort(int[] sortItems)
05 {
06 int i, j, temp;
07 for (i = 1; i < sortItems.Length; i++)
08 {
09 temp = sortItems[i];
10 j = i;
11 while (j > 0 && sortItems[j - 1] > temp)
12 {
13 sortItems[j] = sortItems[j - 1];
14 j--;
15 }
16 sortItems[j] = temp;
17 }
18 }