zoukankan      html  css  js  c++  java
  • 选择排序-直接选择排序

    直接选择排序

    这个系列是回顾之前所学,是用python商量着完成的。

    路过的大佬就当看个乐,实现算法的方式不一,也有讨巧的做法。

    我只讲讲我的思路,希望大家浏览的时候能多多提建议,共同学习共同进步。

    --------------------------------------------------------------------------------------------------------

     选择排序之直接选择排序的基本思路:

      将序列中最小的数,拿出来与第一个数交换,再到剩下的数中选出最小的数出来与第二个数交换,如此重复

      怎么实现:
    1.首先锚定第一个要交换的值i,下标从0开始,一共需要遍历n-1遍
    2.然后从i到len(list)中遍历。如果找到比i更小的数,就交换他们的值,如果没有这次遍历就结束了,i值位置不变
    3.前面交换了值的部分无需遍历,i+1,继续往后面中的数去遍历

    以下是具体实现:
     1 def selected_sort(list):
     2     min_index = 0
     3     # 根据直接选择排序的特性,那么第一个数肯定无疑是最小的值,min_index=0 没有毛病
     4     for i in range(0, len(list)-1):
     5         # 总共就比较n-1次,最后一个不用比较肯定是整个数组中最大的值
     6         # i从0开始无非是将数组中最小的数先遍历出来,放在第一位3
     7         for j in range(i, len(list)):
     8             # 这个循环无非是从j中遍历出比当前min_index还小的值
     9             # 从i开始的原因是,i之前的值已经是排好序的不需要再改动
    10             if list[j] < list[min_index]:
    11                 # 如果当前还有比min_index,即i下标值还要小的,就交换值,没有就是i最小,那就不需要改动
    12                 min_index = j
    13         list[min_index], list[i] = list[i], list[min_index]
    14         # 这里为什么是i + 1?不是 += 1?因为每一次min_index都是指向待排序序列的第一个下标
    15         min_index = i + 1
    16     return list

    以上就是全部内容,接下来实现合并算法

     
  • 相关阅读:
    windows 2003系统安装
    Metasploit msfvenom
    cve_2019_0708_bluekeep漏洞
    ms12-020漏洞
    使用ajaxFileUpload实现异步上传图片
    Beautifulsoup学习笔记
    Python设计模式——设计原则
    Python设计模式——工厂方法模式(FactoryMethod)
    Python设计模式——代理模式(Proxy)
    Python设计模式——装饰模式(Decorator)
  • 原文地址:https://www.cnblogs.com/PurpleRain98/p/13588615.html
Copyright © 2011-2022 走看看