• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

使用几种常用排序方法对C#数组进行排序

OC/C/C++ 水墨上仙 2855次浏览

本代码片段演示了使用冒泡法,插入排序法,选择排序法,希尔排序法,快速排序法对C#数组进行排序,是用C#学习数据结构的好代码片段

 using System;
  
   namespace DataStruct
   {
       public class Sorter
       {
         /// <summary>
         /// 冒泡排序法1
         /// </summary>
         /// <param name="list"></param> 
          public static void BubbleSort(int[] list)
          {
              for (int i = 0; i < list.Length; i++)
              {
                  for (int j = i; j < list.Length; j++)
                  {
                      if (list[i] < list[j])
                      {
                         int temp = list[i];
                         list[i] = list[j];
                         list[j] = temp;
                     }
                 }
             }
         }
         /// <summary>
         /// 插入排序法
         /// </summary>
         /// <param name="list"></param>
         public static void InsertionSort(int[] list)
         {
             for (int i = 1; i < list.Length; i++)
              {
                 int t = list[i];
                 int j = i;
                 while ((j > 0) && (list[j - 1] > t))
                 {
                     list[j] = list[j - 1];
                     --j;
                 }
                 list[j] = t;
             }
         }
         //// <summary>
         /// 选择排序法
         /// </summary>
         /// <param name="list"></param>
         public static void SelectionSort(int[] list)
         {
             int min;
             for (int i = 0; i < list.Length - 1; i++)
             {
                 min = i;
                 for (int j = i + 1; j < list.Length; j++)
                 {
                     if (list[j] < list[min])
                         min = j;
                 }
                 int t = list[min];
                 list[min] = list[i];
                 list[i] = t;
             }
         }
        //// <summary>
        /// 希尔排序法
        /// </summary>
        /// <param name="list"></param>
        public static 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;
                 }
             }
         }
         private static void Swap(ref int l, ref int r)
         {
             int s;
             s = l;
             l = r;
             r = s;
         }
         /// 快速排序法
         /// </summary>
         /// <param name="list"></param>
         /// <param name="low"></param>
         /// <param name="high"></param>
         public static void Sort(int[] list, int low, int high)
         {
             int pivot;
             int l, r;
             int mid;
             if (high <= low)
                 return;
             else if (high == low + 1)
             {
                 if (list[low] > list[high])
                     Swap(ref list[low], ref list[high]);
                 return;
             }
             mid = (low + high) >> 1;
             pivot = list[mid];
             Swap(ref list[low], ref list[mid]);
             l = low + 1;
             r = high;
             do
             {
                 while (l <= r && list[l] < pivot)
                     l++;
                 while (list[r] >= pivot)
                     r--;
                 if (l < r)
                     Swap(ref list[l], ref list[r]);
             } while (l < r);
             list[low] = list[r];
             list[r] = pivot;
             if (low + 1 < r)
                 Sort(list, low, r - 1);
             if (r + 1 < high)
                 Sort(list, r + 1, high);
         }
     }
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明使用几种常用排序方法对C#数组进行排序
喜欢 (0)
加载中……