几种常见的排序方法

  public class Sort
  {
   #region BubbleSorter
   /// <summary>
   /// BubbleSorter
   /// </summary>
   /// <param name="Array"></param>
   /// <return>Array</return>
   /// <remarks>n*n</remarks>
   public void BubbleSorter(int[] list)
   {
    int temp;
    for (int i=0;i<list.Length;i++)
     for (int j=0;j<list.Length;j++)
     {
      if (list[i]<list[j])
      {
       temp=list[i];
       list[i]=list[j];
       list[j]=temp;
      }
     }
   }

   #endregion

   #region SelectionSorter
   /// <summary>
   /// SelectionSorter
   /// </summary>
   /// <param name="Array"></param>
   /// <return>Array</return>
   /// <remarks>n(n-1)/2remarks>
   public void SelectionSorter (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]) //Get min position
       min=j;
     }
     int t=list[min]; // Set min value to first position   
     list[min]=list[i];
     list[i]=t;
    }
   }
   #endregion

   #region InsertionSorter
   /// <summary>
   /// InsertionSorter
   /// </summary>
   /// <param name="Array"></param>
   /// <return>Array</return>
   /// <remarks></remarks>
   public void InsertionSorter (int [] list)
   {
    //[j] compare [j-1]->0
    for(int i=1;i<list.Length;i++)
    {
     int t=list[i];  // Save current value  || define and no change in this cycle
     int j=i;  // Save current position
     while((j>0)&&(list[j-1]>t)) 
     {
      list[j]=list[j-1];
      --j;
     }
     list[j]=t;
    }
   }
   #endregion

   #region ShellSorter
   /// <summary>
   /// ShellSorter
   /// </summary>
   /// <param name="Array"></param>
   /// <return>Array</return>
   /// <remarks>n!</remarks>
   public void ShellSorter(int [] list)
   {
    int inc;
    // Group list then sort
    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;
     }
    }
   }
   #endregion
  }
  #endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值