Skip to content

Commit 3848588

Browse files
committed
modified
1 parent 083fde3 commit 3848588

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

docs/Selectionsort.md

+8-6
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,36 @@ $n$ 个记录的数组可经过 $n-1$ 轮选择排序得到有序结果。
2626
### 普通版本
2727

2828
```python
29-
def selection_sort(array: List) -> None:
29+
def selection_sort(array: List, reverse: bool=False) -> None:
3030
'''
3131
支持数值型数据,如整型与浮点型混合;支持全为字符串类型的数据;不支持字符串型与数值型混合。
32+
reverse: 是否降序, 默认采用升序。
3233
'''
3334
length = len(array)
3435
for index in range(length - 1):
35-
mind = index # 标记最小关键字位置
36+
mind = index # 标记关键字位置
3637
for next in range(index + 1, length): # 搜索
37-
if array[mind] > array[next]:
38+
if array[mind] < array[next] if reverse else array[mind] > array[next]:
3839
mind = next
3940
array[index], array[mind] = array[mind], array[index]
4041
```
4142

4243
### 标记最大值
4344

4445
```python
45-
def selection_sort(array: List) -> None:
46+
def selection_sort(array: List, reverse: bool=False) -> None:
4647
'''
4748
支持数值型数据,如整型与浮点型混合;支持全为字符串类型的数据;不支持字符串型与数值型混合。
49+
reverse: 是否降序, 默认采用升序。
4850
'''
4951
length = len(array)
5052
scope = length // 2
5153
for index in range(scope):
5254
mind, maxd = index, index # 从一个方向搜索来保证单调性
5355
for next in range(index + 1, length - index):
54-
if array[mind] > array[next]:
56+
if array[mind] < array[next] if reverse else array[mind] > array[next]:
5557
mind = next
56-
if array[maxd] < array[next]:
58+
if array[maxd] > array[next] if reverse else array[maxd] < array[next]:
5759
maxd = next
5860
array[mind], array[index] = array[index], array[mind]
5961
maxd = mind if index == maxd else maxd

sortingx/selection.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,33 @@
11
from typing import List
22

33
# 普通版本
4-
def normal(array: List) -> None:
4+
def normal(array: List, reverse: bool=False) -> None:
55
'''
66
支持数值型数据,如整型与浮点型混合;支持全为字符串类型的数据;不支持字符串型与数值型混合。
7+
reverse: 是否降序, 默认采用升序。
78
'''
89
length = len(array)
910
for index in range(length - 1):
10-
mind = index # 标记最小关键字位置
11+
mind = index # 标记关键字位置
1112
for next in range(index + 1, length): # 搜索
12-
if array[mind] > array[next]:
13+
if array[mind] < array[next] if reverse else array[mind] > array[next]:
1314
mind = next
1415
array[index], array[mind] = array[mind], array[index]
1516

1617
# 标记最大值
17-
def withmax(array: List) -> None:
18+
def withmax(array: List, reverse: bool=False) -> None:
1819
'''
1920
支持数值型数据,如整型与浮点型混合;支持全为字符串类型的数据;不支持字符串型与数值型混合。
21+
reverse: 是否降序, 默认采用升序。
2022
'''
2123
length = len(array)
2224
scope = length // 2
2325
for index in range(scope):
2426
mind, maxd = index, index # 从一个方向搜索来保证单调性
2527
for next in range(index + 1, length - index):
26-
if array[mind] > array[next]:
28+
if array[mind] < array[next] if reverse else array[mind] > array[next]:
2729
mind = next
28-
if array[maxd] < array[next]:
30+
if array[maxd] > array[next] if reverse else array[maxd] < array[next]:
2931
maxd = next
3032
array[mind], array[index] = array[index], array[mind]
3133
maxd = mind if index == maxd else maxd

0 commit comments

Comments
 (0)