c# - 基于预定义数据生成近似排序列表的算法

标签 c# algorithm sorting

注意:这是 2 部分问题的第 1 部分。

Part 2 here

我想更多地了解排序算法以及比编码更好的方法!所以我想我需要一些数据来处理。

我创建一些“标准”数据的方法如下:创建一定数量的项目,不确定要多大,但我想玩得开心,让我的电脑有点呻吟:D

获得该列表后,我会将其推送到一个文本文件中,然后读取该文件以运行我的算法。我应该总共有 4 个文本文件,其中填充了相同的数据,只是为了运行我的算法而进行了不同的排序(见下文)。

如果我错了请纠正我,但我相信我需要 4 种不同类型的场景来描述我的算法。

  • 随机排序的数据(为此我将使用 knuth shuffle)
  • 反转数据(足够简单)
  • 接近排序(不确定如何实现)
  • 很少有独特之处(再次不确定如何处理)

这个问题是为了生成一个几乎排序的列表。

哪种方法最适合根据预定义数据生成近似排序的列表?

最佳答案

“打乱”排序列表以使其“几乎排序”:

  1. 创建一个您可以想到的函数列表,您可以将这些函数应用于数组的各个部分,例如:

    否定(数组,startIndex,endIndex);
    反转(数组,startIndex,endIndex);
    Swap(array, startIndex, endIndex);

  2. 对于 i 从零到数组长度的某个函数(例如 Log(array.Length):

    1. 随机选择2个整数*
    2. 从你想到的函数中随机选择一个函数
    3. 将该函数应用于数组的那些索引

*注意:整数应限制为数组大小。相反,选择随机整数并“环绕”数组 - 这样靠近末端的元素将有与中间元素相同的修改机会。

关于c# - 基于预定义数据生成近似排序列表的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047896/

相关文章:

c# - 使用构建后操作创建 nuget 包

c# - 使用 HttpClient 通过 AttributeRouting 在 URL 中发送日期

c# - 验证标签内容等于 null 或 string.Empty

algorithm - 克鲁斯卡尔的 MST : Union operation using Union-Find DS: Guarantee on join taking place between the nodes with least edge weight

java - Java 应用程序中的计数排序和使用

c# - 如何在 Dapper 中插入 SQL 文字作为查询参数?

string - 按前缀划分字符串的算法

c++ - 显示任何类型的一维或二维数组内容的函数

javascript - 根据键是否存在和值对对象数组进行排序

c++冒泡排序与基数排序