C# 排序算法记录

时间:2023-03-09 16:56:33
C# 排序算法记录
    class Program
{
static void Main(string[] args)
{
var array = new[] { , , , , , , , , -, , , }; //假设一个最小的值
var minnum = array[];
for (int i = ; i < array.Length; i++)
{
if (array[i] < minnum)
{
minnum = array[i];
} } //假设一个最大的值
var maxnum = array[];
for (int i = ; i < array.Length; i++)
{
if (array[i] > maxnum)
{
maxnum = array[i];
}
}
Console.WriteLine("Min:" + minnum);
Console.WriteLine("Max:" + maxnum); Console.WriteLine("=======冒泡排序========");
for (int i = ; i < array.Length; i++)
{
for (int j = ; j < array.Length - i - ; j++)
{
var temp = ;
if (array[j] > array[j + ])
{
temp = array[j];
array[j] = array[j + ];
array[j + ] = temp;
}
}
}
//冒泡排序算法
for (int i = ; i < array.Length; i++)
{
Console.Write(array[i]+" ");
} Console.WriteLine("\r\n=======快速排序========");
//快速排序算法 var list = new List<int> { , , , , , , , , -, , , }; QuickSort(list, , list.Count ); foreach (var item in list)
{
Console.Write(item+" ");
}
//二叉树排序
Console.ReadLine();
} /// <summary>
/// 快速排序
/// </summary>
/// <param name="nums">集合</param>
/// <param name="left">开始</param>
/// <param name="right">总数</param>
private static void QuickSort(List<int> nums, int left, int right)
{ if (left < right)
{ int i = left; int j = right - ; int middle = nums[(left + right) / ]; while (true)
{ while (i < right && nums[i] < middle)
{
i++;
} while (j > && nums[j] > middle)
{
j--;
} if (i == j) break; nums[i] = nums[i] + nums[j]; nums[j] = nums[i] - nums[j]; nums[i] = nums[i] - nums[j]; if (nums[i] == nums[j]) j--; } QuickSort(nums, left, i); QuickSort(nums, i + , right); }
} }