怎么用python写一个简单的排序算法
时间: 2023-10-20 12:05:25 浏览: 46
可以使用Python编写许多种不同的排序算法,其中最简单的算法是冒泡排序。以下是使用Python编写的冒泡排序算法实现:
```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]
# 示例
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("排序后的数组:")
for i in range(len(arr)):
print("%d" % arr[i])
```
以上代码中, `bubble_sort()` 函数接受一个数组 `arr` 作为参数,并使用嵌套的循环来比较相邻的元素并交换它们的位置,直到整个数组都被排序为止。在主程序中,我们定义一个数组并调用 `bubble_sort()` 函数来对其进行排序。
相关问题
用python写一个冒泡排序算法
冒泡排序是一种简单的排序算法,它通过重复地比较相邻的元素来排序数列。它的工作原理如下:
首先,比较第一个和第二个元素。如果第一个元素大于第二个元素,则交换它们的位置。接着,比较第二个元素和第三个元素。如果第二个元素大于第三个元素,则交换它们的位置。这样,依次比较相邻的两个元素,并交换位置,直到最后一个元素。这样,最大的元素就浮动到了数列的最后。
然后,重复以上过程,直到排序完成。
下面是用 Python 实现的冒泡排序算法的代码:
```
def bubble_sort(nums):
# 控制排序的轮数
for i in range(len(nums) - 1):
# 控制每轮排序的次数
for j in range(len(nums) - i - 1):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
return nums
# 测试
print(bubble_sort([3, 2, 1])) # [1, 2, 3]
```
注意:冒泡排序的时间复杂度为 O(n^2),因此它并不适用于对大数据集进行排序。
用python写一个快速排序算法
以下是使用Python编写的快速排序算法:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
left = []
right = []
for i in arr[1:]:
if i < pivot:
left.append(i)
else:
right.append(i)
return quick_sort(left) + [pivot] + quick_sort(right)
```
在这个算法中,我们首先检查数组的长度是否小于或等于1。如果是这样,我们将返回数组本身,因为只有一个元素或没有元素可以被认为是已排序的。否则,我们选择一个元素作为支点(pivot),并将数组中所有小于支点的元素放在左侧数组(left),将所有大于支点的元素放在右侧数组(right)。然后,我们递归地对左侧和右侧数组进行快速排序,并将它们与支点合并在一起。最后,我们返回已排序的数组。
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)