C#第七周第二节课的代码整理

准备上课。从这节课开始,课程的难度就会加速上升,大家可以期待一下。我会继续在这里为各位分享课堂代码和课后代码的答案。大家一起加油!争取人人 C# 90+ !

首先讲的是冒泡排序的思想,这里展示的是升序排序的冒泡排序。实际上冒泡排序的升序降序调整非常简单,只要更改双层循环中,内层循环的判断就可以。改进版的代码相对于基础代码增加了一个 flag 特判。我们在外层循环中初始化 flagtrue ,如果我们在内层循环中,没有进行调换操作,那么这其实就说明,我们现在的数组已经满足了我们的要求,我们不需要进一步的循环来达到目标效果,所以在内存循环结束后,如果 flag 的值仍为 true ,没有发生变化,那么就说明我们的代码已经满足了要求,这事我们就可以退出循环,避免不必要的循环。

下面就是相关的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
namespace 改进后冒泡排序
{
internal class Program
{

static void Main(string[] args)
{
int[] arr = { 1, 3, 5, 10, 7, 32, 2, 13, 0 };
Console.WriteLine("排序前数组");
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i] + " ");
}
Console.WriteLine();
for(int i = 0; i < arr.Length - 1; i++)
{
bool flag = true;
for (int j = arr.Length - 1; j > i; j--)
{
if (arr[j] < arr[j - 1]) // 如果这里是 > 那么我们最后得到的数组就是降序
{
flag = false;
int t = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = t;
}
}
if (flag)
break;
}
Console.WriteLine("排序后数组:");
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i] + " ");
}

// Console.WriteLine("Hello, World!");
}
}
}

后面又讲了双向链表的一个使用。课上只是大致的讲了一下,只听一节课就把这个点记住显然是不现实的。这个知识点在考试时估计也不会出现太多。将这个的目的就是为了给我们留个大致的印象,在我们将来尝试用 C#解决问题时,就可以想起来使用这个结构。

下面是使用的一个代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System.Collections.Generic;
namespace 双向链表实例
{
internal class Program
{
static void Main(string[] args)
{
LinkedList<string> linkedlist = new LinkedList<string>();

linkedlist.AddFirst("Head");
linkedlist.AddFirst("Big");
linkedlist.AddLast("Fish");

LinkedListNode<string> headNode = linkedlist.First;
LinkedListNode<string> tailNode = linkedlist.Last;

linkedlist.AddAfter(headNode, "big");

while (headNode != null)
{
// Console.WriteLine(headNode.ToString());
Console.WriteLine(headNode.Value);
headNode = headNode.Next;
}

// Console.WriteLine("Hello, World!");
}
}
}


C#第七周第二节课的代码整理
https://leoeightxuan.github.io/2025/04/02/C-第七周第二节课的代码整理/
作者
Leoeight
发布于
2025年4月2日
许可协议