IT评测·应用市场-qidao123.com
标题:
算法---选择排序
[打印本页]
作者:
半亩花草
时间:
2025-1-22 14:05
标题:
算法---选择排序
选择排序的思路
在乱序数组中查找到最小元素(升序),存放到起始位置
重复第一步,直到数组有序
代码
class Solution:
def choose(self, arr):
n = len(arr)
for i in range(n - 1):
min_index = i
for j in range(i + 1, n):
if arr[j] < arr[min_index]:
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
if __name__ == "__main__":
arr = [8, 0, 4, 6, 1, 2, 7, 3, 5, 9]
s = Solution()
res = s.choose(arr)
print(res)
复制代码
优化点
使用双向指针可以进行优化
class Solution:
def selecttion_sort(self, arr):
n = len(arr)
for i in range(n):
min_index = i
left = i + 1
right = n - 1
while left <= right:
if arr[left] < arr[min_index]:
min_index = left
if arr[right] < arr[min_index]:
min_index = right
left += 1
right -= 1
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
if __name__ == "__main__":
arr = [8, 0, 4, 6, 1, 2, 7, 3, 5, 9]
s = Solution()
res = s.selecttion_sort(arr)
print(res)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4