• 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
  • 相关阅读:
    nyoj--76--超级台阶
    nyoj--17--单调递增最长子序列
    poj-2406-Power Strings(KMP)
    poj-1611-The Suspects(并查集)
    poj 2031--Building a Space Station(prim)
    poj 3259-- Wormholes(SPFA)
    nyoj 21--三个水杯(隐式图bfs)
    HDU
    HDU
    CodeForces
  • 原文地址:https://www.cnblogs.com/Yellowshorts/p/3523928.html
Copyright © 2020-2023  润新知