排序算法之 插入排序

插入排序

基本思路

  • 把待排序的原数列中的第一个数作为已排序列表的元素,剩余元素组成待排序列表;
  • 接着从待排序列表中的第一个数开始,与已排序列表中的数一一作比较,并且是从右向左作比较;
  • 若待排序数比已排序列表中的最右侧第一个数小,则进行已排序列表中该数字右移操作,并将待排序数插入该数字位置上;
  • 循环进行待排序数与已排序列表中最右侧第二个数字比较;若待排序数仍比列表中数小,则继续进行右移、插入等操作,再进行与右第三个数比较;若待排序数比列表中数大,则退出循环;
  • 待排序列表中之后的数依次与已排序列表中数进行比较。

图画展示

insertSort

代码呈现

SortAlgorithm.py

# !/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'jwj'
# 插入排序,默认升序,desc=True时为降序
def insertSort(list, desc=False):
    count = len(list)
    if count == 0 or count == 1:
        return list
    for j in range(1, count):
        key = list[j]
        i = j - 1
        if desc:
            while i >= 0 and list[i] < key:
                list[i+1] = list[i]
                list[i] = key
                i -= 1
        else:
            while i >= 0 and list[i] > key:
                list[i+1] = list[i]
                list[i] = key
                i -= 1
    return list

main.py

# !/usr/bin/env python
# -*- coding:utf-8 -*-
from SortAlgorithm import *

if __name__ == '__main__':
    list = [45,2,5,11,1]
    print insertSort(list)
    #output: [1, 2, 5, 11, 45]
    print insertSort(list,True)
    #output: [45, 11, 5, 2, 1]

算法分析

  • 插入排序基本操作:将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数列,算法适用于少量数据的排序,是稳定的排序方法。
  • 时间复杂度
    最好情况:原列表内数据已序,for循环进去,while循每次只需进行测试条件判断一次,T(n)=O(n)
    最坏情况:原列表内数据均逆序,for循环进去,while循环需每次都进行条件判断和内部语句执行,T(n)=O(n^2)
昆仑通态触摸屏编程软件McgsPro v3.5.1.7267是一款专业的触摸屏编程软件,主要应用于工业自动化领域。该软件可以实现触摸屏的人机界面设计,为用户提供了一个直观、简便、高效的操作环境。在该软件中,用户可以进行图形化界面设计、数据采集、数据显示、报警记录、历史数据存储、报表打印等各种功能的设计。McgsPro v3.5.1.7267软件具有强大的功能和灵活性,支持多种PLC设备,如西门子、三菱、欧姆龙、施耐德等,用户可以根据自己的需求选择合适的PLC设备进行编程。同时,该软件还支持多种通讯协议,如Modbus、Profibus等,可以实现与其他设备的数据交换。此外,McgsPro v3.5.1.7267软件还具有良好的可扩展性,可以通过安装相应的插件或者模块,实现更多的功能。软件的设计理念是“人机交互”,即通过触摸屏的界面设计,实现人与设备的有效交互,提高设备的使用效率和操作的便捷性。McgsPro v3.5.1.7267软件的推出,对于工业自动化领域来说,无疑是一个重要的进步。它不仅提高了工业自动化设备的智能化水平,也大大提升了工业生产的效率和质量。无论对于设备制造商还是最终用户,McgsPro v3.5.1.7267都是一个非常有价值的选择。该软件的iso文件McgsPro_v3.5.1.7267.iso,是一个压缩包文件,包含了McgsPro v3.5.1.7267软件的全部安装文件。用户只需要将该iso文件解压,然后按照安装向导进行安装,就可以使用该软件了。需要注意的是,由于该软件的复杂性和专业性,用户在使用前需要有一定的工业自动化知识和编程经验。昆仑通态触摸屏编程软件McgsPro v3.5.1.7267是一款功能强大、操作简便、适用范围广泛的工业自动化软件。它不仅可以提高工业生产的效率和质量,还可以提高设备的智能化水平,对于工业自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值