选择排序

点击蓝字“莫名Coder”关注我哟

加个“星标”,每日良时,好文必达!

  内存的工作原理

生活中,我们去超市之前需要存储自己东西,那么就需要存储柜。每个存储柜可放一个东西,你有两样东西要寄存,因此需要两个存储柜。寄存完毕之后,你可以愉快的购物了,这大概就是计算机内存的工作原理。计算机就是许多存储柜的集合,每个抽屉都有地址。

feeb就是一个内存单元的地址,计算机给你一个存储地址,需要存储数据,有两种方式---数组和链表。

数组和链表

数组和链表并非试用所有的情形,因此需要知道它们的差别很重要,接下来一起了解一下它们的优缺点。

链表

链表中的额元素可以存储内存中的任何地方。

链表中的每个元素都存储了下一个元素的地址,从而使一系列随机的内存地址串在一起。这就是一个寻宝游戏,你前往第一个地址,那么有一个纸条告诉你下一个地址,以此内推。

使用链表时,根本不需要移动元素,假如说想去看演唱会,六个人坐一起,那么座位没有在一起,使用数组则是无法实现,那么这个时候只要是系统有足够的内存,则可以使用链表。链表的优势在于插入元素方面。

数组

假设一个数组有五个元素,第一个元素的地址为00,那么第五个是多少?

显而易见,当然是05.需要随机读取元素时,数组的效率很高,因为可以快速找到其它数组的任何元素。链表中元素并非靠在一起,无法准确的计算第五个元素的内存地址。

插入元素和删除元素
插入元素

在餐厅点菜,需要中间插入数据,那么怎么处理?使用链表时,插入元素很简单,只需要修改它前面元素指向的地址。而使用数组的时候,则必须将后面的元素向后移。如果没有足够的空间,那么还要将数组复制到其它地方,在进行插入元素。因此链表插入元素是更好的选择。

删除元素

删除元素,链表也是最好的选择,只需要修改前一个元素的内存指向的地址即可。而使用数组时,删除元素后,必须将后面的元素前移。

不同于插入,删除元素总可以成功。如果内存中没有足够的空间,插入操作可能失败。但是任何情况下都可以删除元素。

数组和链表那个用的更多?

数组用的更多,它支持随机访问,有两种方式:随机访问和顺序访问。顺序访问则是从一个读取到最后一个元素,链表只可以顺序访问。

选择排序

有了前面的认识,我们可以学习选择排序了,假设计算机中存了很多音乐,对于每首音乐,都记录了播放次数。我们要将列表按照播放次数从多到少的排序,从而将你喜欢的音乐排序。如何操作?

要找出播放次数最多的音乐,必须检查每个元素,需要时间为O(n),然后需要执行n次,需要的总时间就是O(n*n)。

示例代码:

def find_smal(list):
    smal = list[0] # 存储最小的值
    smal_index = 0 # 存储最小元素的索引
    for i in range(1, len(list)):
        if list[i] < smal:
            smal = list[i]
            smal_index = i
    return smal_index


def select_sort(list):
    new_list = []
    for i in range(len(list)):
        smal = find_smal(list)
        new_list.append(list.pop(smal))
    rerurn new_list

my_list = [11, 3, 5, 2, 88, 1, 0, 55, 22]
print(select_sort(my_list))

注意

  • 计算机中内存就相当于存储柜

  • 存储多个元素时可以使用数组和链表

  • 数组的元素都在一起,链表的元素分开的,其中每个元素存储了下一个元素的地址

  • 数组的读取速度比较快,链表的插入和删除很快

  • 在同一个数组中,所有的元素类型必须相同(都为int等等)

球分享

球点赞

球在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值