day05——22_9_29

65 阅读1分钟

C# 基础

冒泡排序:缺点:交换次数过多

int[] num = { 3, 1, 43, 1, 4, 1 };
int temp = 0;

for (int i = 0; i < num.Length - 1; i++) // 比较次数
{
    for (int j = 0; j < num.Length - 1 - i; j++)
    {
        if (num[j] > num[j + 1])
        {
            temp = num[j];
            num[j] = num[j + 1];
            num[j + 1] = temp;
        }
    }

}

Console.Write(String.Join("-", num));

快排

// 快排
int[] nums = new int[] { 4, 2, 1, 21, 5, 54 };

for (int i = 0; i < nums.Length - 1; i++)
{
    int minNum = i;
    for (int j = i + 1; j < nums.Length; j++)
    {
        if (nums[minNum] > nums[j])
        {
            minNum = j;
        }
    }

    if (minNum != i)
    {
        int temp = nums[minNum];
        nums[minNum] = nums[i];
        nums[i] = temp;
    }
}
Console.WriteLine(String.Join(",", nums));

练习一

image.png

Console.Write("请输入一组用空格隔开的数据:");
string str = Console.ReadLine();
string[] strArray = str.Split(" ");
int[] numArray = new int[strArray.Length];
for (int i = 0; i < strArray.Length; i++)
{
    numArray[i] = Convert.ToInt32(strArray[i]);
}

Array.Sort(numArray);

// 输入你要插入的值
Console.Write("请输入你要插入的值:");
int num = Convert.ToInt32(Console.ReadLine());

// 定义一个变量记录插入的位置下标
int numIndex = 0;
// 循环有序数组,判断 num是否在元素中间
for (int i = 0; i < numArray.Length - 1; i++)
{
    if (num >= numArray[i] && num <= numArray[i + 1])
    {

        numIndex = i + 1;
        break;
    }
}
// 判断特殊情况:最后面
if (num > numArray[numArray.Length - 1])
{
    numIndex = numArray.Length;
}
// 最前面:numIndex = 0,不用再去判断

// 创建新数组
int[] numArray2 = new int[numArray.Length + 1];
// 循环遍历,赋值
// 0 - numIndex-1 直接赋值
for (int i = 0; i < numIndex; i++)
{
    numArray2[i] = numArray[i];
}
// numIndex 直接插入 num值
numArray2[numIndex] = num;

// numIndex+1 - 最后一个下标
for (int i = numIndex + 1; i < numArray2.Length; i++)
{
    numArray2[i] = numArray[i - 1];
}

Console.WriteLine(String.Join("-", numArray2));

练习二

image.png

Console.Write("请输入一个标识符:");
string str = Console.ReadLine();

Boolean isFlag = true;

for (int i = 0; i < str.Length; i++)
{
    if (48 <= str[i] && str[i] <= 57 || 65 <= str[i] && str[i] <= 90 || 97 <= str[i] && str[i] <= 122 || str[i] == 95)
    {
        if (i == 0 && 48 <= str[i] && str[i] <= 57)
        {
            isFlag = false;
            break;
        }
    }
}

Console.Write(isFlag ? "合法" : "不合法");

国庆练习

static void Main(string[] args)
{

    Console.Write("请输入字符串:");
    string str = Console.ReadLine();

    int[] arr = new int[7];

    foreach (int temp in str)
    {
        if (temp == 'b')
        {
            arr[0]++;
        }
        else if (temp == 'a')
        {
            arr[1]++;
        }
        else if (temp == 'l')
        {
            arr[2]++;
        }
        else if (temp == 's')
        {
            arr[3]++;
        }
        else if (temp == 'k')
        {
            arr[4]++;
        }
        else if (temp == 'e')
        {
            arr[5]++;
        }
        else if (temp == 't')
        {
            arr[6]++;
        }

    }
    arr[0] /= 2;
    arr[1] /= 2;
    arr[2] /= 2;

    int min = arr[0];

    for (int i = 1; i < arr.Length; i++)
    {
        if (arr[i] < min)
        {
            min = arr[i];
        }
    }

    Console.WriteLine("最多有{0}个 basketball", min);
}