C# 几种常见的排序方法
1.冒泡排序
1 //冒泡排序 2 public void BubbleSort(int[] list) 3 { 4 int i, j, temp; 5 bool done = false; 6 j = 1; 7 while ((j < list.Length) && (!done))//判断数组的长度 8 { 9 done = true; 10 for (i = 0; i < list.Length - j; i++)//利用for循环进行排序 11 { 12 if (list[i] > list[i + 1]) 13 { 14 done = false; 15 temp = list[i]; 16 list[i] = list[i + 1];//交换数据 17 list[i + 1] = temp; 18 } 19 } 20 j++; 21 } 22 }
2.选择排序
1 //选择排序 2 public void SelectSort(int[] list) 3 { 4 for (int i = 0; i < list.Length; i++) 5 { 6 int min = i;//定义变量并赋值 7 for (int j = i + 1; j < list.Length; j++) 8 { 9 if (list[j] < list[min]) 10 min = j;//最小是放在相应的位置 11 } 12 //交换数据 13 int t = list[min]; 14 list[min] = list[i]; 15 list[t] = t; 16 } 17 }
3.希尔排序
public void ShellSort(int[] list) { int inc; for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ; for (; inc > 0; inc /= 3) { for (int i = inc + 1; i <= list.Length; i += inc) { int t = list[i - 1]; int j = i; while ((j > inc) && (list[j - inc - 1] > t)) { list[j - 1] = list[j - inc - 1];//交换数据 j -= inc; } list[j - 1] = t; } } }
4.插入排序
1 public void InsertSort(int[] list) 2 { 3 for (int i = 1; i < list.Length; i++) 4 { 5 int t = list[i]; 6 int j = i; 7 while ((j > 0) && (list[j - 1] > t)) 8 { 9 list[j] = list[j - 1]; //交换数据 10 --j; 11 } 12 list[j] = t; 13 } 14 }
5.求最大共因子
1 int gcd(int u, int v) 2 { 3 int r; 4 while (v != 0) 5 { 6 r = u % v; 7 u = v; 8 v = r; 9 } 10 return (u); 11 }
乌龟才背着房子过一辈子