Csharp关于排序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SortMethod
{
   internal class Program
   {
      private static void Main(string[] args)
      {
         //1.冒泡排序
         //BubbleSort();
         //2.插入排序,属于稳定的排序
         //InsertionSort();
         //3.二分法排序
         //4.希尔排序
         //5.快速排序
         //6.堆排序
         //7.归并排序
         //8.基数排序
         //9.选择排序,属于不稳定的排序
         int[] arr = { 23, 44, 66, 76, 98, 11, 3, 9, 7 };
         SelectSort(arr);
         Console.ReadLine();
         //
      }

      public static void BubbleSort()
      {
         int temp = 0;
         int[] arr = { 23, 44, 66, 76, 98, 11, 3, 9, 7 };

         #region "该段与排序无关"
         Console.WriteLine("排序前的数组:");
         foreach (int item in arr)
         {
            Console.Write(item + "");
         }
         Console.WriteLine();
         #endregion

         for (int i = 0; i < arr.Length - 1; i++)
         {
            #region "将大的数字移到数组的arr.Length-1-i"
            for (int j = 0; j < arr.Length - 1 - i; j++)
            {
               if (arr[j] > arr[j + 1])
               {
                  temp = arr[j + 1];
                  arr[j + 1] = arr[j];
                  arr[j] = temp;
               }
            }
            #endregion
         }
         Console.WriteLine("排序后的数组:");
         foreach (int item in arr)
         {
            Console.Write(item + "");
         }
         Console.WriteLine();
         Console.ReadKey();
      }

      ///<summary>
      ///插入排序法,从大到小
      ///</summary>
      private static void InsertionSort()
      {
         Console.WriteLine("插入排序法");
         int temp = 0;
         int[] arr = { 23, 44, 66, 76, 98, 11, 3, 9, 7 };

         Console.WriteLine("排序前的数组:");
         foreach (int item in arr)
         {
            Console.Write(item + ",");
         }
         Console.WriteLine();

         var length = arr.Length;

         for (int i = 1; i < length; i++)
         {
            for (int j = i; j > 0; j--)
            {
               if (arr[j] > arr[j - 1])
               {
                  temp = arr[j];
                  arr[j] = arr[j - 1];
                  arr[j - 1] = temp;
               }
            }
            //每次排序后数组
            PrintResult(arr);
         }
         Console.ReadKey();
      }

      ///<summary>
      ///打印结果
      ///</summary>
      ///<paramname="arr"></param>
      private static void PrintResult(IEnumerable<int> arr)
      {
         foreach (int item in arr)
         {
            Console.Write(item + ",");
         }
         Console.WriteLine();
      }

      /// <summary>
      /// 选择排序
      /// </summary>
      /// <param name="group"></param>
      private static void SelectSort(int[] group)
      {
         int temp;
         int pos = 0;
         for (int i = 0; i < group.Length - 1; i++)
         {
            pos = i;
            for (int j = i + 1; j < group.Length; j++)
            {
               if (group[j] < group[pos])
               {
                  pos = j;
               }
               //第i个数与最小的数group[pos]交换
               temp = group[i];
               group[i] = group[pos];
               group[pos] = temp;
            }

            PrintResult(group);
         }
      }

   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值