bool-hybrid-array 9.11.11__py3-none-any.whl → 9.11.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
bool_hybrid_array/core.py CHANGED
@@ -283,6 +283,10 @@ class BoolHybridArray(MutableSequence,Exception,metaclass=ResurrectMeta):# type:
283
283
  for i, val in zip(slice_indices, value_list):
284
284
  self[i] = val
285
285
  return
286
+ if new_len == max(0, stop - start):
287
+ for v,i in zip(new_len,range(start,stop)):
288
+ self[i] = v
289
+ return
286
290
  for i in range(stop - 1, start - 1, -1):
287
291
  if i <= self.split_index:
288
292
  if i >= len(self.small):
@@ -2,6 +2,37 @@ from __future__ import annotations
2
2
  from collections.abc import Iterable
3
3
  from ..core import *
4
4
  import builtins
5
+ def block_insert_sort(arr, start, end):
6
+ for i in range(start + 1, end):
7
+ current = arr[i]
8
+ insert_pos = bisect.bisect_right(arr, current, start, i)
9
+ j = i
10
+ while j > insert_pos:
11
+ arr[j], arr[j-1] = arr[j-1], arr[j]
12
+ j -= 1
13
+ def merge_two_blocks(arr, left_start, left_end, right_end):
14
+ if arr[left_end - 1] <= arr[left_end]:
15
+ return
16
+ left = arr[left_start:left_end]
17
+ right = arr[left_end:right_end]
18
+ i = j = 0
19
+ k = left_start
20
+ while i < len(left) and j < len(right):
21
+ if left[i] <= right[j]:
22
+ arr[k] = left[i]
23
+ i += 1
24
+ else:
25
+ arr[k] = right[j]
26
+ j += 1
27
+ k += 1
28
+ while i < len(left):
29
+ arr[k] = left[i]
30
+ i += 1
31
+ k += 1
32
+ while j < len(right):
33
+ arr[k] = right[j]
34
+ j += 1
35
+ k += 1
5
36
  class IntBitTag(BHA_bool, metaclass=ResurrectMeta):
6
37
  def __str__(self):
7
38
  return "'-1'" if (hasattr(self, 'is_sign_bit') and self.is_sign_bit and self) else "'1'" if self else "'0'"
@@ -95,9 +126,14 @@ class IntHybridArray(BoolHybridArray,metaclass=ResurrectMeta):
95
126
  return self.to_int(bit_chunk)
96
127
 
97
128
  def __setitem__(self, key, value):
98
- tmp = list(self)
99
- tmp[key] = value
100
- self.__init__(tmp)
129
+ tmp1 = IntHybridArray([value],bit_length = self.bit_length)
130
+ tmp = tmp1.view()
131
+ if tmp1[0] == value:
132
+ super().__setitem__(slice(key*self.bit_length,(key+1)*self.bit_length),tmp)
133
+ else:
134
+ lst = list(self)
135
+ lst[key] = value
136
+ self.__init__(lst)
101
137
  def __iter__(self):
102
138
  return map(self.__getitem__,range(len(self)))
103
139
 
@@ -152,3 +188,17 @@ class IntHybridArray(BoolHybridArray,metaclass=ResurrectMeta):
152
188
  self.total_bits += self.bit_length
153
189
  self.size = self.total_bits
154
190
  self[-1] = value
191
+ def sort(self):
192
+ n = len(self)
193
+ BLOCK_SIZE = 32
194
+ for start in range(0, n, BLOCK_SIZE):
195
+ end = min(start + BLOCK_SIZE, n)
196
+ block_insert_sort(self, start, end)
197
+ merge_size = BLOCK_SIZE
198
+ while merge_size < n:
199
+ for start in range(0, n, merge_size * 2):
200
+ mid = min(start + merge_size, n)
201
+ end = min(start + merge_size * 2, n)
202
+ if mid < end:
203
+ merge_two_blocks(self, start, mid, end)
204
+ merge_size *= 2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bool-hybrid-array
3
- Version: 9.11.11
3
+ Version: 9.11.13
4
4
  Summary: 一个高效的布尔数组(密集+稀疏混合存储,节省内存)
5
5
  Home-page: https://github.com/BKsell/bool-hybrid-array
6
6
  Author: 蔡靖杰
@@ -621,6 +621,8 @@ print(f"出队2个元素后: {q}") # 输出:BHA_Queue([T,T,F,T,F])
621
621
  * **9.11.9**:修复BHA_Queue的bug,新增cin和cout(使用方式:a = ctypes.c_int();cin >> a;cout << a,支持各种ctypes类型、numpy标量)
622
622
  * **9.11.10**:修复cin的AttributeError的错误
623
623
  * **9.11.11**:新增cin对EOF的处理
624
+ * **9.11.12**:优化了IntHybridArray的__setitem__,新增了IntHybridArray的sort
625
+ * **9.11.13**:修复IndexError的错误
624
626
 
625
627
 
626
628
 
@@ -0,0 +1,14 @@
1
+ bool_hybrid_array/__init__.py,sha256=m44910RtpNN9VGJkDkG_T3aZ50wPidd6hT5t1Yw465s,1086
2
+ bool_hybrid_array/__main__.py,sha256=uFyebfsZl1tW54AVcc6IDhk36BglTGb_Vw3Djx8pq00,8987
3
+ bool_hybrid_array/_cppiostream.py,sha256=1i973ag_8XgivQkeIbqzHivflcQkVFtX77R_UwChSAg,9205
4
+ bool_hybrid_array/compile_core.cp314-win_amd64.pyd,sha256=3vFAZ6vSMqoP_fWRkXd_KVPVUw4oo2Nv7xi0sBQu2fQ,516096
5
+ bool_hybrid_array/core.c,sha256=gFU1P6ksFaDqT0vUC4u65bb700-LZU6vu0mwTUYNLzg,3241001
6
+ bool_hybrid_array/core.py,sha256=t0CuBJwRJY870E0ycnMpdfflAIIa6PgUk3W1IVzbDrs,42257
7
+ bool_hybrid_array/秘密.md,sha256=Ii2NvXmv-Ktu04zJsGLcQZvlzT4gOatByE4B2wTK1Ks,48
8
+ bool_hybrid_array/int_array/__init__.py,sha256=CCKDUL5GBAXOprc9FhtLNL_rP4IDhvGVWJ-Dporp6YI,112
9
+ bool_hybrid_array/int_array/core.py,sha256=DZ6mC-qLQahV25b_1RHGPK959XYtILYP_Pbwwg7nFLA,7936
10
+ bool_hybrid_array-9.11.13.dist-info/licenses/LICENSE,sha256=Sg4rnGXkBDYkwJCWyxdWp5H60rhVAxpNvFh_l3JWZdY,1070
11
+ bool_hybrid_array-9.11.13.dist-info/METADATA,sha256=hYO9uLNP-zI7EIUqLe_5CHcsLDS9DvU4BB-kUG4gKb0,26473
12
+ bool_hybrid_array-9.11.13.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
13
+ bool_hybrid_array-9.11.13.dist-info/top_level.txt,sha256=vk-TD77wuVQsN1rJ6uVWZX4sC_wya_WplRDwQKJoBZM,18
14
+ bool_hybrid_array-9.11.13.dist-info/RECORD,,
@@ -1,14 +0,0 @@
1
- bool_hybrid_array/__init__.py,sha256=r7hGlbJiOFmS9NisOL0YR4oNN09aQ2p-suxxXXxawOY,1086
2
- bool_hybrid_array/__main__.py,sha256=uFyebfsZl1tW54AVcc6IDhk36BglTGb_Vw3Djx8pq00,8987
3
- bool_hybrid_array/_cppiostream.py,sha256=1i973ag_8XgivQkeIbqzHivflcQkVFtX77R_UwChSAg,9205
4
- bool_hybrid_array/compile_core.cp314-win_amd64.pyd,sha256=LbC9PHoXLjtBBCvI_Xipvly8d3ojE32iwfQH6FFbzNU,556544
5
- bool_hybrid_array/core.c,sha256=om2tuMhsXPLtmFAcJpY-VnZcwVJ2sZrYEPWPsdtEs4M,3230975
6
- bool_hybrid_array/core.py,sha256=nrmu8djPZS3Y70wRa_QkeM-5v-LGLUkuSZiw__OFU-M,42091
7
- bool_hybrid_array/秘密.md,sha256=Ii2NvXmv-Ktu04zJsGLcQZvlzT4gOatByE4B2wTK1Ks,48
8
- bool_hybrid_array/int_array/__init__.py,sha256=CCKDUL5GBAXOprc9FhtLNL_rP4IDhvGVWJ-Dporp6YI,112
9
- bool_hybrid_array/int_array/core.py,sha256=hnXHSLabtbDCnO3JX0M5tsF0BWlQpjWKu7RplMx7i8A,6236
10
- bool_hybrid_array-9.11.11.dist-info/licenses/LICENSE,sha256=Sg4rnGXkBDYkwJCWyxdWp5H60rhVAxpNvFh_l3JWZdY,1070
11
- bool_hybrid_array-9.11.11.dist-info/METADATA,sha256=_Rdoe4mYyGIPdto54vfro-n6vhVnQSMhRqaNyxv-b4c,26342
12
- bool_hybrid_array-9.11.11.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
13
- bool_hybrid_array-9.11.11.dist-info/top_level.txt,sha256=vk-TD77wuVQsN1rJ6uVWZX4sC_wya_WplRDwQKJoBZM,18
14
- bool_hybrid_array-9.11.11.dist-info/RECORD,,