在心算法网
首页 算法资讯 正文

python排序算法

来源:在心算法网 2024-06-10 04:02:32

目录预览:

python排序算法(1)

  Python是一种高级编程语言,它提供了多种排序算法来帮助程序员处理数据lJi排序算法是将一组数据按照某种规则进行排列的过程,常用的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序。在本文中,我们将介绍Python中常用的排序算法及其实现方法。

1. 冒泡排序

  冒泡排序是一种简单的排序算法,它的基本思想是通过不断交换相邻的元素来排序。体实现如下:

  ```python

def bubble_sort(arr):

n = len(arr)

  for i in range(n):

for j in range(0, n-i-1):

  if arr[j] > arr[j+1]:

arr[j], arr[j+1] = arr[j+1], arr[j]

  return arr

  ```

  在上述代中,我们使用了两个循环来实现冒泡排序。外层循环控制排序的次数,内层循环实现相邻元素的比和交换在心算法网。时间复杂度为O(n^2)。

python排序算法(2)

2. 选择排序

  选择排序是一种简单的排序算法,它的基本思想是每次从排序的元素中选择小的元素放到已排序的末体实现如下:

  ```python

  def selection_sort(arr):

  n = len(arr)

for i in range(n):

min_idx = i

  for j in range(i+1, n):

  if arr[j] < arr[min_idx]:

min_idx = j

  arr[i], arr[min_idx] = arr[min_idx], arr[i]

  return arr

  ```

  在上述代中,我们使用了两个循环来实现选择排序。外层循环控制排序的次数,内层循环实现排序元素的查找和小元素的交换。时间复杂度为O(n^2)minaka66.net

3. 插入排序

插入排序是一种简单的排序算法,它的基本思想是将排序的元素插入到已排序的序列中。体实现如下:

  ```python

  def insertion_sort(arr):

n = len(arr)

  for i in range(1, n):

key = arr[i]

  j = i-1

  while j >=0 and key < arr[j] :

arr[j+1] = arr[j]

  j -= 1

arr[j+1] = key

  return arr

  ```

  在上述代中,我们使用了两个循环来实现插入排序。外层循环控制排序的次数,内层循环实现排序元素的插入和移动。时间复杂度为O(n^2)。

python排序算法(3)

4. 快速排序

快速排序是一种高效的排序算法,它的基本思想是通过治法将一个大问题解成若干个小问题来求解在.心.算.法.网体实现如下:

  ```python

def quick_sort(arr):

if len(arr) <= 1:

  return arr

  pivot = arr[len(arr)//2]

  left = [x for x in arr if x < pivot]

  middle = [x for x in arr if x == pivot]

  right = [x for x in arr if x > pivot]

return quick_sort(left) + middle + quick_sort(right)

  ```

  在上述代中,我们使用了递归来实现快速排序。首先选择一个基准元素,然后将数组成左右两个子数组,左子数组中的所有元素都小于基准元素,右子数组中的所有元素都大于基准元素。时间复杂度为O(nlogn)。

5. 归并排序

归并排序是一种高效的排序算法,它的基本思想是通过治法将一个大问题解成若干个小问题来求解,并将这小问题的解合并成一个大问题的解。体实现如下:

```python

  def merge_sort(arr):

if len(arr) > 1:

mid = len(arr)//2

left = arr[:mid]

right = arr[mid:]

  merge_sort(left)

merge_sort(right)

  i = j = k = 0

  while i < len(left) and j < len(right):

  if left[i] < right[j]:

arr[k] = left[i]

  i += 1

else:

  arr[k] = right[j]

  j += 1

k += 1

while i < len(left):

  arr[k] = left[i]

i += 1

  k += 1

while j < len(right):

  arr[k] = right[j]

j += 1

  k += 1

  return arr

  ```

在上述代中,我们使用了递归来实现归并排序在心算法网。首先将数组成左右两个子数组,然后递归对这两个子数组进行排序,后将这两个有序子数组合并成一个有序数组。时间复杂度为O(nlogn)。

总结

在Python中,有多种排序算法可供选择。不同的算法适用于不同的场景,我们需要根据实际情况选择合适的算法。在实际应用中,我们还可以结合多种排序算法来实现更高效的排序www.minaka66.net在心算法网

标签 算法排序
我说两句
0 条评论
请遵守当地法律法规
最新评论

还没有评论,快来做评论第一人吧!
相关文章
最新更新
最新推荐