冒泡排序后不同的数组会同步吗?

问题描述

作为一项学校作业,我必须创建一个 Python 应用程序,允许用户添加 X 人的个人信息。话虽如此,该程序允许用户选择许多选项,其中之一是按字母顺序对人员列表及其信息进行排序,而无需使用 sort() 或 quicksort() 函数。我唯一能做的就是使用冒泡排序法。

最初,我的想法是为不同的数据类型创建数组,例如:

姓氏 = [ ]

名字 = [ ]

出生日期 = [ ]

性别 = [ ]

但问题是,如果我对 Last_names 应用冒泡排序,其他数组信息将如何与新订单同步?就像每个人的信息会混淆吗?

更新:

所以我决定使用格式 person1 = ["name1","date_of_birth1","gender1".....]

然后将其添加到另一个列表

addressbook = ["person1","person2","person3",.....]

解决方法

我会用字典代替每个人的列表。例如:

person1 = {
    "name":"Bao Tang","date_of_birth":"2000/01/01","gender":"male"
}

您可以将字典直接存储到列表中:

persons = [
    {
        "name":"Bao Tang","gender":"male"
    },{
        "name":"Name 2","date_of_birth":"2001/02/03","gender":"female"
    }
]

然后可以通过这种方式访问​​记录及其信息:

persons[index]["name"]
persons[index]["date_of_birth"]
persons[index]["gender"]

persons[0]["gender"] # based on the example list above,would return the value "male"

对于您的排序,您可以向函数添加一个“key”参数,并使用该参数来指定要对哪些信息进行排序:

def bubble_sort(arr,key):
    n = len(arr)
    for i in range(n - 1):
        for j in range(0,n - i - 1):
            if arr[j][key] > arr[j + 1][key]:            # we compare keys of 2 records
                arr[j],arr[j + 1] = arr[j + 1],arr[j]  # we swap the whole record

# example call
bubble_sort(persons,"date_of_birth")

注意:即使它很简单并且应该可以工作,这都是未经测试的代码。谨慎使用!