一年365个实验 ER213:插入排序

Posted 壹秒青春

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一年365个实验 ER213:插入排序相关的知识,希望对你有一定的参考价值。

实验题目及内容

插入排序

Java实现简单插入排序case

实验目的

锻炼提高自己的Java代码能力

每天学习一点简单的算法知识,提高自己思维能力和专业水平

在某种程度上也是完成以前想做没有做或者说懒得做的事情,说的好听一点呢是做自己想做的事情,说的不好听呢就是还债

实验准备及注意事项

充足的时间、电脑、Java运行环境

注意先自己按照算法的思想尝试实现,再按照书本或者网站上的示范实现,尽可能多的用其他思路实现

实验步骤与方法

在之前配置好Java运行环境的电脑上,根据插入排序的思路自己敲代码实现

实验原因及背景

大学本科的时候专业是电子信息工程,但是有一门课是C语言程序设计,本来就是乖乖仔的我大学还没有玩野,也就认认真真地学习了,于是就入选了当时的ACM培训,当时的眼界没有那么开阔,只是老师给我们的实验室网络很好,于是刷剧刷的飞起,可笑的是当时还刷了一部特别励志的电影《三傻大闹宝莱坞》,想想也是讽刺,也就是网络好的诱惑,两个暑假都错失了好好学习数据结构的机会,当然也有一部分原因自己专业不是计算机科学,语言局限于C,又没有人给指路,那个时候Python也没有这么流行,C语言写的那种黑白界面真的找不到刺激点去继续学习,但是没有做完的事情总算是一种遗憾,而我,不想留有遗憾

实验记录

今天的算法实现没有那么顺利,一开始按照算法的简单描述想着怎么插入,毕竟是数组,又不是链表,如果真的有这么一个数字正好处于有序数组中间,后移该怎么处理,还写出三重循环了,毕竟代码敲的太少,卡了很久以后在网上搜索参考以实现的代码

看了百科词条后面的Java实现,代码精简,发现是用局部冒泡实现的插入,从第一个元素开始,该元素可以认为已经被排序,然后取出下一个元素,在已经排序的元素序列中从后向前扫描,这样也就满足了两重循环,感觉有序数组就像是不同密度的液体,在这堆液体下面还有不同液体包,一个个破了从排序好的液体底部冒出来,密度大的沉在下面,小的浮上去

果然还是要学习,不然单凭自己的智商以及瞎想解决不了问题,也浪费了不少时间,被困在这种困境里面最后茅塞顿开或者看到别人的思路被惊艳到的那种瞬间或许就是最原始编程中的乐趣吧

后续目标

等用Java实现完各种思路以及各大排序算法之后,尝试用Python甚至Go去实现一波,今天有在想要不要邪恶一波用RPGLE实现一波

其他

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2),是稳定的排序方法

https://github.com/benleolee/Sort


以上是关于一年365个实验 ER213:插入排序的主要内容,如果未能解决你的问题,请参考以下文章

插入排序(直接插入排序折半插入排序)

实验报告——直接插入排序改进的冒泡排序和归并排序实现整数数组的排序

[PTA]实验7-1-1 简化的插入排序

基础实验7-2.2 插入排序还是堆排序 (25分)

实验八--排序算法

插入类排序--直接插入排序