python排序程序怎么写

时间:2025-01-27 16:52:56 单机游戏

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]

return arr

nums = [64, 34, 25, 12, 22, 11, 90]

print("排序前:", nums)

print("排序后:", bubble_sort(nums))

```

选择排序

原理:每次从未排序的部分找到最小的元素,放到已排序部分的末尾。

代码示例:

```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

```

快速排序

原理:选择一个基准元素,将数组分为两部分,一部分比基准小,一部分比基准大,然后递归地对两部分进行排序。

代码示例:

```python

def quick_sort(arr):

if len(arr) <= 1:

return arr

else:

pivot = arr

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

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

return quick_sort(left) + [pivot] + quick_sort(right)

```

内置排序函数

`sorted()`:返回一个新的排序列表,原列表不变。

`.sort()`:直接在原列表上进行排序,不返回值。

示例:

```python

numbers = [5, 3, 8, 6, 2]

sorted_numbers = sorted(numbers)

print("使用 sorted() 排序后的新列表:", sorted_numbers)

print("原列表未改变:", numbers)

numbers.sort()

print("使用 .sort() 排序后原列表变为:", numbers)

```

自定义排序规则

可以通过`key`参数指定排序依据,`reverse`参数指定是否降序排序。

示例:

```python

numbers = [5, 3, 8, 6, 2]

sorted_numbers = sorted(numbers, key=lambda x: x, reverse=True)

print("降序排序后的新列表:", sorted_numbers)

```

忽略大小写排序

在排序字符串时,可以使用`key`参数将字符串转换为小写进行比较。

示例:

```python

words = ['bob', 'about', 'zoo', 'Credit']

sorted_words = sorted(words, key=lambda s: s.lower())

print("忽略大小写排序后:", sorted_words)

```

多列排序

可以通过指定多个列名和`ascending`参数进行多列排序。

示例:

```python

df = pd.DataFrame({

'姓名': ['小王', '小李', '小张', '小陈'],

'年龄': [25, 22, 28, 24],

'工资': [8000, 7000, 12000, 9000]

})

df_sorted = df.sort_values(['年龄', '工资'], ascending=[False, True])

print(df_sorted)

```

这些排序算法各有优缺点,选择合适的算法可以提高程序的效率。对于小数据集,插入排序和冒泡排序是简单有效的选择;对于大数据集,快速排序和内置的`sorted()`函数更为高效。