算法---选择排序

打印 上一主题 下一主题

主题 1002|帖子 1002|积分 3006

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
选择排序的思路


  • 在乱序数组中查找到最小元素(升序),存放到起始位置
  • 重复第一步,直到数组有序
代码

  1. class Solution:
  2.     def choose(self, arr):
  3.         n = len(arr)
  4.         for i in range(n - 1):
  5.             min_index = i
  6.             for j in range(i + 1, n):
  7.                 if arr[j] < arr[min_index]:
  8.                     min_index = j
  9.             arr[i], arr[min_index] = arr[min_index], arr[i]
  10.         return arr
  11. if __name__ == "__main__":
  12.     arr = [8, 0, 4, 6, 1, 2, 7, 3, 5, 9]
  13.     s = Solution()
  14.     res = s.choose(arr)
  15.     print(res)
复制代码
优化点

使用双向指针可以进行优化
  1. class Solution:
  2.     def selecttion_sort(self, arr):
  3.         n = len(arr)
  4.         for i in range(n):
  5.             min_index = i
  6.             left = i + 1
  7.             right = n - 1
  8.             while left <= right:
  9.                 if arr[left] < arr[min_index]:
  10.                     min_index = left
  11.                 if arr[right] < arr[min_index]:
  12.                     min_index = right
  13.                 left += 1
  14.                 right -= 1
  15.             arr[i], arr[min_index] = arr[min_index], arr[i]
  16.         return arr
  17. if __name__ == "__main__":
  18.     arr = [8, 0, 4, 6, 1, 2, 7, 3, 5, 9]
  19.     s = Solution()
  20.     res = s.selecttion_sort(arr)
  21.     print(res)
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表