C#常用数据结构和算法总结
数据结构
数组(Array)
数组是一种线性数据结构,它可以在内存中连续地存储相同类型的数据。可以使用索引访问数组中的元素。数组的元素可以是任意类型。
在 C# 中,定义一个数组需要指定数组的类型和数组的大小。例如,定义一个包含 5 个整数的数组:
int[] arr = new int[5];
链表(LinkedList)
链表是另一种常见的线性数据结构。它由节点组成,每个节点包含一个值和一个指向下一个节点的指针。链表的尾节点指针指向 null。
在 C# 中,可以使用 LinkedList
类实现链表。例如,定义一个包含 3 个整数的链表:
LinkedList<int> ll = new LinkedList<int>();
ll.AddLast(1);
ll.AddLast(2);
ll.AddLast(3);
栈(Stack)
栈是一种后进先出(LIFO)的数据结构。栈顶元素是最后插入的元素,栈底元素是最先插入的元素。
在 C# 中,可以使用 Stack
类实现栈。例如,定义一个包含 5 个整数的栈:
Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Push(3);
stack.Push(4);
stack.Push(5);
队列(Queue)
队列是一种先进先出(FIFO)的数据结构。队列的队首元素是最先插入的元素,队尾元素是最后插入的元素。
在 C# 中,可以使用 Queue
类实现队列。例如,定义一个包含 3 个整数的队列:
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
算法
冒泡排序(Bubble Sort)
冒泡排序是一种简单的排序算法。它反复地交换相邻元素,直到整个序列都有序为止。
public static void BubbleSort(int[] arr)
{
int n = arr.Length;
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
二分查找(Binary Search)
二分查找是一种快速查找有序数组中元素的算法。它每一次将数组分成两部分,查找值与数组中间值比较,确定查找值在哪一部分,直到查找值被找到为止。
public static int BinarySearch(int[] arr, int x)
{
int left = 0;
int right = arr.Length - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (arr[mid] == x)
{
return mid;
}
else if (arr[mid] < x)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return -1;
}
以上是我对 C# 常用数据结构和算法的总结,希望对大家有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#常用数据结构和算法总结 - Python技术站