马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
选择排序的思路
- 在乱序数组中查找到最小元素(升序),存放到起始位置
- 重复第一步,直到数组有序
代码
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |