准备上课。从这节课开始,课程的难度就会加速上升,大家可以期待一下。我会继续在这里为各位分享课堂代码和课后代码的答案。大家一起加油!争取人人 C# 90+ !
首先讲的是冒泡排序的思想,这里展示的是升序排序的冒泡排序。实际上冒泡排序的升序降序调整非常简单,只要更改双层循环中,内层循环的判断就可以。改进版的代码相对于基础代码增加了一个 flag 特判。我们在外层循环中初始化 flag 为 true ,如果我们在内层循环中,没有进行调换操作,那么这其实就说明,我们现在的数组已经满足了我们的要求,我们不需要进一步的循环来达到目标效果,所以在内存循环结束后,如果 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] + " " ); } } } }
后面又讲了双向链表的一个使用。课上只是大致的讲了一下,只听一节课就把这个点记住显然是不现实的。这个知识点在考试时估计也不会出现太多。将这个的目的就是为了给我们留个大致的印象,在我们将来尝试用 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.Value); headNode = headNode.Next; } } } }