C#排序算法总结

1、冒泡排序

1.冒泡排序   将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"(冒泡因此得名)。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。 下面是种的往下冒泡的例子

class Program
   {
       /// <summary>
       /// 冒泡排序
       /// </summary>
       /// <param name="numArr"></param>
       public void Sort(int[] numArr)
       {
           int tmpNum;
           for (int i = 0; i < numArr.Length;i++ )//最多做numArr.Length-1趟排序
           {
               for (int j = 0; j < numArr.Length-1;j++ )
               {
                   if (numArr[j]>numArr[j+1])
                   {
                       tmpNum = numArr[j];
                       numArr[j] = numArr[j + 1];
                       numArr[j + 1] = tmpNum;
                   }
               }
           }
       }
       static void Main(string[] args)
       {
           int[] Arr = new int[] {3,6,1,9,8,7 };
           Program p = new Program();
           p.Sort(Arr);
           for (int k = 0; k < Arr.Length;k++ )
           {
               Console.Write("{0} ", Arr[k]);
           }
       }
   }



2、选择排序(Selection Sort)

选择排序的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。

/// <summary>
/// 选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,
/// 顺序放在已排好序的子文件的最后,直到全部记录排序完毕。
/// </summary>
/// <param name="numArr"></param>
public void SelectionSort(int[] numArr)
{
    int min, tmpNum;
    for (int i = 0; i < numArr.Length - 1;i++ )
    {
        min = i;
        for (int j = i + 1; j < numArr.Length;j++ )
        {
            if (numArr[j] < numArr[min])
            {
                min = j;
            }
        }
        tmpNum = numArr[i];
        numArr[i] = numArr[min];
        numArr[min] = tmpNum;
    }
}
static void Main(string[] args)
{
    int[] Arr = new int[] {3,6,1,9,8,7 };
    Program p = new Program();
    p.SelectionSort(Arr);
    for (int k = 0; k < Arr.Length; k++)
    {
        Console.Write("{0} ", Arr[k]);
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值