数组:升序和乘法表

时间:2015-03-05 02:42:12

标签: python

如何使用数组按升序排列5个整数,不使用sort() 那么5x5乘法表也使用数组,比如使用list,array append。

1 个答案:

答案 0 :(得分:0)

我会捅我相信你所问的东西,主要是因为我希望它具有教育意义。你很幸运我此刻拖延学习。

排序,因为谁还喜欢熵?

泡沫!
您的第一个任务是查看bubble sort,这是一种排序算法,它的编码简单易懂。 (由于其 O(n 2 性能,它在大型阵列上表现不佳,但可能是许多人遇到的第一类。)我非常高兴,高度建议您在考虑查看代码之前先了解算法。

它是如何运作的?
从头开始!看看第一对数字。如果他们的顺序错误,请换掉他们。将起始位置增加1并重复直到数组结束。

这在Python中会是什么样子?
我很高兴你问。您需要遍历整个数组并在适当时进行交换。值得庆幸的是,Python使交换变得非常简单,允许你像a, b = b, a那样使用技巧。我们可以(希望很快)写下一些代码来做我们想要的事情:

def bubble_sort(array):
    for i in xrange(len(array)):
        for j in xrange(len(array) - i - 1):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]
    return array

这应该是直截了当的,并直接遵循排序程序。传入一个数组(或数字列表),它将返回一个按升序排序的数组。


乘法表

我假设你的意思是你在一年级学到的this table。我对你模糊的措辞强加的要求是我们想要返回一个二维数组,其中第一行是0的倍数,第二行是1的倍数,等等。这也适用于列,因为乘法表行和列之间是对称的。有很多可能的方法,但我只会考虑我个人认为最优雅和Pythonic的方法。 Python带有很好的列表理解能力,为什么不利用它呢?试试这个:

table = [[x*y for x in xrange(6)] for y in xrange(6)]

这将创建一个6x6矩阵,即0-5的乘法表。花一些时间来真正理解这段代码。我认为列表理解对于Python来说是绝对必要的,并且它将它与众不同。如果您查看数组的(i, j)元素,您会发现它等于ij。例如,table[3][2] == 6为真。

我非常希望你能从中学到一些有用的东西。下次发帖时,希望您能给我们更多的工作。