分类 默认分类 下的文章

插入排序就像打扑克牌那样, 调整手中扑克牌的顺序。

我最开始写的版本

list_ = [2,1,7,4,9,3,5]

new_list = []
for n in list_:
    if new_list:
        for j in range(len(new_list)):  # 此处不能把new_list 做为循环对象, 
                                        # 因为下文会修改new_list,改循环len()
            if n < new_list[j]:
                new_list.insert(j, n)
                break
            if j == len(new_list) -1:
                new_list.insert(j+1, n)
    else:
        new_list.append(n)

print(new_list)

参考书上的第二版本

- 阅读剩余部分 -

选择排序就是先找出一个列表中最大的元素放到一个新的空列表中,再从这个列表中剩下的元素找出最大的(也就是次大的)添加到之前的新列表后面。以此类推,一直,把原列表找完, 新列表里面的元素就是排好序的。
def findSamllest(arr):
    smallestt = arr[0]
    smallestt_index = 0
    for i in range(1, len(arr)):
        if arr[i] < smallestt:
            smallestt = arr[i]
            smallestt_index = i
    return smallestt_index


def selecionSort(arr):
    newArr = []
    for i in range(len(arr)):
        samllest_index = findSamllest(arr)
        newArr.append(arr.pop(samllest_index))
    return newArr

print(selecionSort([3,7,2,9,6,1]))

实际案例:统计每场都有进球的球员
如下: 字典中的键为球员名字, 值为进球数

In [22]: s1
Out[22]: {'a': 4, 'b': 3, 'e': 3, 'f': 4}

In [23]: s2
Out[23]: {'a': 4, 'b': 2, 'c': 3, 'd': 1, 'e': 1, 'f': 3}

In [24]: s3
Out[24]: {'b': 3, 'd': 4, 'f': 3}

思路:
转化成集合求交集的问题,
利用字典的viewkeys()函数获取字典的所有键(其返回值类似于集合)。

code:

In [33]: s1.viewkeys() & s2.viewkeys() & s3.viewkeys()
Out[33]: {'b', 'f'}

- 阅读剩余部分 -

以下字典代表6位不同同学的分数,如何根据分数给同学排名字:

 d = {'a': 73, 'b': 69, 'c': 66, 'x': 76, 'y': 88, 'z': 83}

方法一:
思路:
将字典转换成数组, sorted函数可以对数组进行排序,但是sorted 函数是先排数据第一个元素再第二个元素,因此需要把字典的值放在键的前面,字典如何转换成数组?使用zip函数。
code:

In [10]: sorted(zip(d.itervalues(), d.iterkeys()))
Out[10]: [(66, 'c'), (69, 'b'), (73, 'a'), (76, 'x'), (83, 'z'), (88, 'y')]

- 阅读剩余部分 -

centos 通常自带的yum源提供的各种软件包都是比较老的版本, 如果想用yum安装最新的软件,推荐第三源ius

sudo yum install https://centos7.iuscommunity.org/ius-release.rpm  # 安装源

# 查询目标软件
yum list git git\*u   # ius 通常会在高版本的软件名后面+‘u’

已安装的软件包
git2u.x86_64                    2.16.5-1.ius.centos7                     @ius   
可安装的软件包
git.x86_64                      1.8.3.1-14.el7_5                         updates

# 如果你已经装有低版本的git,你需要先remove (否则安装的时候会报错)
yum remove git

# 安装
yum install git2u  # 将安装2.0以上版本的git 

- 阅读剩余部分 -