手动对整数列表进行排序

2023-11-29

我对编程还很陌生;我只学习了几个星期的Python。最近有人给我一个练习,要求我生成一个整数列表,然后在单独的列表中手动将数字从最低到最高排序。

import random
unordered = list(range(10))
ordered = []
lowest = 0
i = 0

random.shuffle(unordered)

lowest = unordered[0]

while i in unordered:
    if  unordered[i] < lowest:
        lowest = unordered[i]
        i += 1
    if i >= len(unordered):
        i = 0

ordered.append(lowest)
unordered.remove(lowest)
lowest = unordered[i]

print(ordered)

这是我到目前为止所拥有的,坦率地说,它根本不起作用。我得到的伪代码是这样的:

  • 创建一个空列表来保存有序元素
  • While there are still elements in the unordered list
    • 将最低变量设置为无序列表中的第一个元素
    • For each element in the unordered list
      • 如果元素低于最低值
      • 将该元素的值分配给最低值
    • 将最低的附加到有序列表中
    • 从无序列表中删除最低的
  • 打印出已排序的列表

到目前为止,我遇到的最大问题是我的计数器无法可靠地为我提供一种从无序列表中挑选出最低数字的方法。然后我在索引列表时遇到问题,即索引超出范围。谁能给我一些关于我哪里出错的反馈?

另外,我得到了这个我不太确定的信息:

您可以使用一种既定的方法对列表进行排序,称为选择排序。

这次我不应该使用 Python 的内置排序方法。这一切都应该手动完成。


您无需创建另一个列表即可执行此操作。

x = [5, 4, 3, 2, 5, 1]
n = len(x)

# Traverse through all list elements
for i in range(n):

# Traverse the list from 0 to n-i-1
# (The last element will already be in place after first pass, so no need to re-check)
for j in range(0, n-i-1):

    # Swap if current element is greater than next
    if x[j] > x[j+1]:
        x[j], x[j+1] = x[j+1], x[j]
print(x)

这适用于重复项和降序列表。它还包括一个小的优化,以避免对最后一个元素进行不必要的比较。

注意:这个答案和所有其他答案都使用冒泡排序,这很简单但效率低下。如果您正在寻求性能,那么使用另一种排序算法会更好。看哪种排序算法是最好的,为什么?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手动对整数列表进行排序 的相关文章

随机推荐

  • Karate API - Hello World 示例,但 POST (GraphQL) 创建/检索用户

    我的场景中有两个 graphQL 帖子 就像 Hello World 示例一样 我想创建一个用户 API createUser 然后检索该用户 API getUser 以运行断言 我不确定它是否是 graphQL Post 查询让我绊倒的
  • Swift:将符合 FloatingPoint 的值转换为 Double

    我正在编写浮点协议的扩展 我想以任何可能的方式将其转换为 Double extension FloatingPoint var toDouble Double return Double exactly self 0 compile err
  • 如何从媒体存储中删除单个文件?

    这段代码有效 getActivity getContentResolver delete MediaStore Audio Media EXTERNAL CONTEN T URI TITLE songdetails get index so
  • 将容器从 ACR 部署到 AKS

    我有一个容器 其中有一个非常简单的 Web 应用程序 已上传到 Azure 容器注册表 我创建了一个 AKS 集群 现在我想将容器部署到 AKS 中 我找到了许多关于此的教程 但它们似乎都引用了 YAML 文件 而这些文件的解释很少或根本没
  • java - 比较月份和年份的两个日期值

    我需要匹配两个日期 如果它们的月份 年份相同 我应该返回 true 否则返回 false 根据我的搜索 我找到了以下解决方案 还有其他更好的方法来进行这种比较吗 Calendar cal1 Calendar getInstance Cale
  • 如何使用带通配符的 AzureSearch

    我想搜索名称为 14009 00080300 的字段 并且希望仅搜索其中的一部分 例如 14009 000803 时获得命中 使用这段代码我没有得到任何点击 search 14009 000803 count true top 10 有没有
  • SharedSecrets机制是如何工作的?

    jdk internal misc SharedSecrets自我描述为 共享秘密 的存储库 这是一种机制 调用另一个包中的实现私有方法而不需要 使用反射 包私有类实现了一个公共类 接口并提供调用包私有方法的能力 在该包内 实现该接口的对象
  • Visual Studio Express 2012 for Desktop 中没有 Metro 项目模板?

    两个下载页面桌面版 and 对于 Windows 8提供相同的 Web 安装程序 名为 Visual Studio Express 2012 for Windows Desktop 我安装了它 这是它的 新项目 窗口 In 本教程页面 它说
  • 如何使用 Accessstoken 通过图 api 向 Facebook 好友发送消息

    任何人都可以帮助我使用 graph api 向 Facebook 好友发送消息 I tried response facebook gt call api me feed post to john message You have a Te
  • Visual Studio:如何显示从基类继承的所有类?

    在 Visual Studio 中 如何显示从基类继承的所有类 例如 在 ASP NET MVC 中有几个 动作结果 类型 它们都继承 实现基类ActionResult 看起来除非你只是 知道 View and Json有效ActionRe
  • GZip 压缩在 IIS 7.5 上不起作用

    我试图在 IIS 下支持静态文件的 GZip 压缩 默认情况下应该启用 但没有 但到目前为止还没有工作 这是下面的部分
  • 如何在 Java 中通过引用传递可变参数

    我正在编写一个方法 该方法接收任意数量的参数并返回修改后的参数 我尝试过使用 varargs 但它不起作用 在这里您可以看到代码的简化版本 public static void main String args String hello h
  • 为 Flexbox 列表设置固定间距

    i noticed that on my firefox the distance between the bottom of the website and the list for links terms about is really
  • 这是聚合吗?

    我有以下代码 public static void main String args Engine engine new Engine This Engine Car b new Car engine b null 这是聚合吗 我一直认为聚
  • pgrep -P,但对于孙子而不仅仅是孩子

    我在用 pgrep P 获取 的子进程 pid 但我实际上也想要一份孙子和曾孙的名单 我该怎么做呢 例如 使用常规编程语言 我们会使用递归来做到这一点 但是使用 bash 呢 也许使用 bash 函数 我已经发布了尝试解决方案 它简短而有效
  • uwp InkCanvas 将斯托克斯保存为 svg

    我正在尝试将 InkCanvas InkStorkes 保存为 SVG 我发现之前的一个问题适用于 Wpf 但我无法让它与 uwp 一起使用 Wpf InkCanvas 将斯托克斯保存为 svg 我对其进行了一些更改 但遇到了 GetGro
  • 如何将 simulink 文件转换为 XML

    我需要将 Simulink 文件 mdl 转换为 XML 文件 经过任何搜索后 我没有找到任何内容来帮助我解决此问题 您知道 Java 中的某种方法或现成的解决方案吗 从 R2008b 开始 您可以使用以下命令将 mdl 文件导出到 xml
  • Angular 表单 - 访问子组件模板中的 FormArray

    我有一个需要几个组件FormControls and FormArrays 作为输入 我正在访问FormControl来自子组件的 s 如下所示 formControl control 这工作得很好 但我找不到一种方法来做同样的事情Form
  • 将 dd/mm/yy 和 dd/mm/yyyy 转换为日期

    我有一些字符向量 其中包含各种格式的日期 如下所示 dates lt c 23 11 12 20 10 2012 22 10 2012 23 11 12 我想将它们转换为日期 我已经尝试了 lubridate 包中非常好的 dmy 但这不起
  • 手动对整数列表进行排序

    我对编程还很陌生 我只学习了几个星期的Python 最近有人给我一个练习 要求我生成一个整数列表 然后在单独的列表中手动将数字从最低到最高排序 import random unordered list range 10 ordered lo