Skip to content

Commit 698709b

Browse files
committed
renew project
1 parent 25e544b commit 698709b

File tree

7 files changed

+28
-14
lines changed

7 files changed

+28
-14
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ By the way, I didn't complete all the iterative data types, in order to develop
9797

9898
- [sortingx-1.2.2](https://github.com/linjing-lab/sorting-algorithms/tree/v1.2.2) is the package that support `range`, `zip`, `dict_keys`, `dict_values`, `dict_items` additionally, you can choose what suitable data you want to input.
9999
- [sortingx-1.2.3](https://github.com/linjing-lab/sorting-algorithms/tree/v1.2.3) is the package that corrected the situation where elements are equal in `compare`, support more input data, like data as `[['Jack', (98, 100)], ['Bob', (98, 99)], ['Jessi', (98, 97)]]` and key as `lambda x: x[1][0]`.
100+
- [sortingx-1.3.0](https://github.com/linjing-lab/sorting-algorithms/tree/v1.3.0) is the final version that fully aligned with the `sorted`', reduces redundant data exchanging. like data as `[('Alex', 97, 90, 98, 95), ('Jack', 97, 88, 98, 92), ('Peter', 92, 95, 92, 96), ('Li', 97, 89, 98, 92)]` and key as `key=lambda x: x[1]`.
100101

101102
## LICENSE
102103

Diff for: README_release.md

+1
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@
1212
|v1.2.1|`pip install sortingx==1.2.1`|Delete Core Function to Make Builtin First||
1313
|v1.2.2|`pip install sortingx==1.2.2`|Change Convert Function to Make it More Robust||
1414
|v1.2.3|`pip install sortingx==1.2.3`|Add Verify Function to Solve Comparison of Equal||
15+
|v1.3.0|`pip install sortingx==1.3.0`|Revamp Redundant Data Exchanging About Equal Elements||
1516

1617
</div>

Diff for: sortingx/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@
1616

1717
from .sorting import bubble, insert, shell, heap, quick, merge, __all__
1818

19-
__version__ = '1.2.3'
19+
__version__ = '1.3.0'
2020

2121
assert sys.version_info >= (3, 7, 0)

Diff for: sortingx/sorting.py

+14-11
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def insert(__iterable: Iterable[_T], key: Optional[Callable[[_T], SupportsRichCo
5858
high: int = index - 1
5959
while low <= high: # sequence conforming to monotonicity
6060
mid: int = (low + high) // 2
61-
if (keyc < compare[mid] if reverse else keyc > compare[mid]):
61+
if (keyc <= compare[mid] if reverse else keyc >= compare[mid]):
6262
low: int = mid + 1
6363
else:
6464
high: int = mid - 1
@@ -129,9 +129,10 @@ def build(root: int, end: int) -> None:
129129
for root in range(length // 2 - 1 , -1, -1):
130130
build(root, length)
131131
for end in range(length - 1, 0, -1):
132-
__iterable[0], __iterable[end] = __iterable[end], __iterable[0]
133-
if key != None:
134-
compare[0], compare[end] = compare[end], compare[0]
132+
if compare[0] != compare[end]:
133+
__iterable[0], __iterable[end] = __iterable[end], __iterable[0]
134+
if key != None:
135+
compare[0], compare[end] = compare[end], compare[0]
135136
build(0, end)
136137
return __iterable
137138

@@ -164,12 +165,14 @@ def partition(l: int, r: int) -> int:
164165
for ind in range(l, r):
165166
if (val < compare[ind] if reverse else val > compare[ind]):
166167
index += 1
167-
__iterable[index], __iterable[ind] = __iterable[ind], __iterable[index]
168-
if key != None:
169-
compare[index], compare[ind] = compare[ind], compare[index]
170-
__iterable[index + 1], __iterable[r] = __iterable[r], __iterable[index + 1]
171-
if key != None:
172-
compare[index + 1], compare[r] = compare[r], compare[index + 1]
168+
if compare[index] != compare[ind]:
169+
__iterable[index], __iterable[ind] = __iterable[ind], __iterable[index]
170+
if key != None:
171+
compare[index], compare[ind] = compare[ind], compare[index]
172+
if compare[index + 1] != compare[r]:
173+
__iterable[index + 1], __iterable[r] = __iterable[r], __iterable[index + 1]
174+
if key != None:
175+
compare[index + 1], compare[r] = compare[r], compare[index + 1]
173176
return index + 1
174177
if compare and not verify(compare):
175178
solve(0, len(__iterable) - 1)
@@ -200,7 +203,7 @@ def merg(low: int, mid: int, high: int) -> None:
200203
result: List[_T] = []
201204
store: List[_T] = []
202205
while i < len(left) and j < len(right):
203-
if (rc[j] < lc[i] if reverse else rc[j] > lc[i]):
206+
if (rc[j] <= lc[i] if reverse else rc[j] >= lc[i]):
204207
result.append(left[i])
205208
store.append(lc[i])
206209
i += 1

Diff for: test_.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ def __repr__(self):
1616
Student('Peter', 'B', 10),
1717
)
1818

19-
test = six.merge(student_objects, key=attrgetter('grade', 'age'))
2019
output = sorted(student_objects, key=attrgetter('grade', 'age'))
20+
test = six.merge(student_objects, key=attrgetter('grade', 'age'))
2121
print(test, '\n', output)

Diff for: test_reverse.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# 导包
22
from typing import List
3+
import sortingx
34

45
# 测试
56
class Reverser:
@@ -11,7 +12,7 @@ def __init__(self, genre: str, method: List[str], part: List[bool]=None, ret: Li
1112
assert len(part) == len(method)
1213
if ret != None:
1314
assert len(ret) == len(method)
14-
self.method = 'galley.' + genre
15+
self.method = 'sortingx.' + genre
1516
self.call = method # genre.def
1617
self.part = part
1718
self.ret = ret

Diff for: test_sortingx.py

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import sortingx
2+
3+
with open('./data/test.txt', 'rt', encoding='utf-8') as fout:
4+
strings = fout.readlines()
5+
data = [string.strip('\n') for string in strings]
6+
7+
for value in data:
8+
print(sortingx.heap(eval(value)))

0 commit comments

Comments
 (0)