算法导论 - 基于 C# 的线性时间排序算法实现
线性时间排序(Linear Time Sorting)算法是一类可以在 O ( n ) O(n) O(n) 时间复杂度内完成排序的算法,适用于特定情况下的数据。例如,计数排序(Counting Sort)、基数排序(Radix Sort)和桶排序(Bucket Sort)。这些算法通常依赖于特定的数据结构或假设条件。
本文将介绍基于 C# 的计数排序算法实现。
算法描述
计数排序是一种非比较排序算法。它通过计数数组中每个值出现的次数,来确定每个元素在排序后的数组中的位置。计数排序适用于数据范围较小且数据值是整数的情况。
步骤
- 找出待排序数组中最大和最小的元素。
- 统计每个元素出现的次数,并存储在计数数组中。
- 计算计数数组的累计和,确定每个元素的最终位置。
- 根据计数数组,将每个元素放在排序后的数组中。
- 将排序后的数组复制回原数组。
代码实现
下面是计数排序的 C# 代码实现:
using System;
public class CountingSort
{
public static void Sort(int[] array)
{
int n = array.Length;
if (n == 0)
return;
// 找到数组中的最大值和最小值
int max = array[0];
int min = array[0];
for (int i = 1; i <