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         }
View Code

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         }
View Code

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;
                }
            }
        }
View Code

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         }
View Code

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         }
View Code
原文地址:https://www.cnblogs.com/Yellowshorts/p/3523928.html