C#算法

记录一下手搓算法,现在是2025.11.21,看下能学多少个

排序算法

冒泡排序

static void Main(string[] args)
{
    Random a = new Random();
    int[] arr = new int[20];          // 
    for (int i = 0; i < 20; i++)      // 创建一个数组,包含20个0-100的随机数字
    {                                 // 
        arr[i] = a.Next(0,101);
        Console.Write(arr[i] + " ");
    }
    bool isSwap = false; //优化1:外部声明一个布尔值,用于记录是否交换,如果交换过就跳过一轮
    Console.WriteLine();
    for (int i = 0;i < arr.Length;i++) //轮循环
    {
        isSwap = false;//进来一轮默认没有交换
        for (int j = 0; j < arr.Length - 1 - i;j++) //交换循环
        {                                           //优化2:减去轮数i,这样就不会交换已经确定位置的数字
            if (arr[j] > arr[j + 1])
            {
                isSwap = true; //通过交换判断后 记录bool值为true(已交换)
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
        if(!isSort)
        {
            break; //如果没有通过交换判断 说明已经不需要排序 break跳出轮循环
        }
    }
    for(int i = 0;i < arr.Length;i++)
    {
        Console.Write(arr[i] + " ");
    }
}

评论