python中,数组是指以字符串形式存储的数据结构。在 python中,数组的概念是非常重要的,它可以用于存储一些数值、字符串等,让我们能够快速地访问这些数据。 数组有三种排序方法: 简单排序(sort):可以对数组中的每个元素进行排序,根据元素的大小依次从大到小排列。这种方法需要根据元素的大小来决定对元素进行排序的方法,所以如果大量元素组成的数组中有很多小元素,那么可能需要很长时间才能将数组进行排序。 插入排序(insert):对数组中的每个元素进行插入排序,当数组中所有元素都插入完毕之后,数组就被排好序了。这种方法也是比较快的一种方法,但是需要对数据进行操作。 冒泡排序(bubble):按序列对数组中的每个元素逐个进行比较,当比较到最后一个元素时,就将这个元素移至最后一个位置。这种方法会有一定的时间复杂度。
一、简单排序
简单排序是指根据数组中元素的大小,依次对数组中的元素进行排序的方法。简单排序的基本思想是:每次从最小的元素开始,向上或向下取一个最大的元素,然后再从这个最大的元素开始,向上或向下取一个最小的元素,依此类推,直到完成所有元素的排序。具体实现可以使用简单排序函数 sort ()来实现。 简单排序函数有四种参数,它们分别是: [1][2]…[n]。可以使用以下代码来实现: 可以看到, sort ()函数对数组进行了一次排序操作,每个数组都有四个不同的元素。函数中调用了两次 sort ()函数。其中, sort ()函数是对数组进行一次简单排序,而 sort ()函数则是对数组进行两次简单排序。
二、插入排序
当我们将一个大的数组拆分成多个小的数组,然后再对每个小数组进行排序时,我们就可以采用插入排序了。插入排序的基本思想是:从最小的数组开始,将最大的数组放入第一个元素中,然后依次插入其他元素,直到所有元素都插入完毕。当数组中所有元素都被插入完毕之后,就可以对整个数组进行排序了。 在使用插入排序时,我们需要注意以下几点: 1、如果要对数组进行排序,我们需要先将数组拆分成一个个小的数组,然后再对每个小数组排序数组中的元素。 如果我们按数字从小到大的顺序排序的话,那么当我们把第一个元素插入到第二个元素之前时,就会发现最后一个元素被排在了最前面。
三、冒泡排序
冒泡排序是一种高效的排序方法,其思想是将一个数组按照序列的方式进行排序,并将最后一个元素移动到最左边的位置,这个方法不需要进行数据的操作。冒泡排序最早出现在计算机领域,它是由 Pascal开发的一种算法,后来被 Python所沿用。 冒泡排序和简单排序一样,都是使用数组来进行操作的。与简单排序相比,冒泡排序可以使时间复杂度下降一些,而且它不需要对数据进行操作。 在使用冒泡排序时,可以将数组中的元素按照序列进行排列。
四、快速排序
快速排序是一种有效的排序方法,它和简单排序、插入排序相比,具有更快的速度。快速排序是基于元素的数字序列来实现的,因此我们可以在不破坏数组结构的前提下快速地完成排序。 我们先来看一个简单的例子: 这是一个二进制的字符串,我们需要对这个字符串进行排序。我们使用简单排序方法: 这里我们先给每个元素添加1个数字,然后将这个字符串放入数组中,用插入排序法将它进行排序,然后再对所有元素进行比较。 快速排序比简单排序、插入排序都要快很多,但是它比冒泡排序慢一些。具体来说,快速排序的时间复杂度是O (n),而插入排序和冒泡序则都是O (1)。当我们使用快速排序时,我们只需要将字符串添加到数组中即可。 上述代码运行结果如下: 上面两个代码运行结果都是相同的。快速排名在运行过程中会变得非常慢,所以我们可以使用插入排对数组进行快速排列。
五、随机排序
随机排序是一种随机算法,通过对数组中的每个元素进行比较,确定其先后顺序,然后对其进行排序。与普通的排序算法相比,随机排序算法在时间复杂度上要比普通的排序算法小很多。 随机排序的思想是对数组中的每一个元素都进行一次比较,当比较完成之后,就将这一次比较产生的最大值作为下一次比较的起始值,然后再进行下一次比较。如果最后一次比较是大于最大值的元素,就把它放到最后;如果最后一次比较是小于最大值的元素,就把它放到前面。如此反复执行,直到所有元素都被排完序。 随机排序算法在执行过程中需要不断地进行随机排序,因此需要一定的时间复杂度。随机排序算法比普通排序算法的时间复杂度要高一些。
六、快速排序算法示例
下面以 sort排序为例,对一个数据进行排序。 如图所示,从左至右,从小到大的顺序是: 这个数据结构很简单,使用 sort对它进行排序的话,在执行一次 sort操作后就可以对数组中的数据进行排序了。 注意,这个数据结构的索引是在 sort函数中创建的,所以想要对这个数据进行排序的话,也可以使用 insert函数来实现。 因为每次都要对数组中的每一个元素进行比较,所以速度是比较慢的。 上面介绍了三种排序算法,每种排序算法都有各自的优缺点。使用哪种算法,应该根据实际情况来决定。下面我们将以这三种算法为例,来简单说明一下它们各自的特点。
python数组排序常用的代码:
1.使用sorted()函数进行排序
“`python
arr=[3,1,4,1,5,9,2,6,5,3,5]
sorted_arr=sorted(arr)
print(sorted_arr)
“`
输出结果:
“`
[1,1,2,3,3,4,5,5,5,6,9]
“`
2.使用sort()方法进行排序
“`python
arr=[3,1,4,1,5,9,2,6,5,3,5]
arr.sort()
print(arr)
“`
输出结果:
“`
[1,1,2,3,3,4,5,5,5,6,9]
“`
3.使用numpy库的sort()函数进行排序
“`python
importnumpyasnp
arr=np.array([3,1,4,1,5,9,2,6,5,3,5])
sorted_arr=np.sort(arr)
print(sorted_arr)
“`
输出结果:
“`
[11233455569]
“`
4.使用heapq库的heapify()和heappop()函数进行堆排序
“`python
importheapq
arr=[3,1,4,1,5,9,2,6,5,3,5]
heapq.heapify(arr)
sorted_arr=[]
whilearr:
sorted_arr.append(heapq.heappop(arr))
print(sorted_arr)
“`
输出结果:
“`
[1,1,2,3,3,4,5,5,5,6,9]
“`