插入排序
插入排序
1. 概念定义
插入排序(Insertion Sort),一般也被称为直接插入排序,是一种简单直观的排序算法。
工作原理:将待排列元素划分为「已排序」和「未排序」两部分,每次从「未排序的」元素中选择一个插入到「已排序的」元素中的正确位置。
这个过程类似于平时打扑克牌时摸牌的操作:右手摸牌,根据牌面大小,放到左手中正确的位置。
这里有张动图,但是好像放不上来
比如:1 2 6 3 4 7 5 ,将其从小到大排序。
第一次参与排序的数据:2 6 3 4 7 5(因为最开始没有[已排序的],所以第一个数可以直接作为[已排序的])
第一次循环:
当前的数:2
当前已有序列表:1
2 > 1 : 2 放在 1 之后
第二次参与排序的数据:6 3 4 7 5
第二次循环:
当前的数:6
当前已有序列表:1 2
6 > 2 : 6 放在 2 之后
第三次参与排序的数据:3 4 7 5
第三次循环:
当前的数:3
当前已有序列表:1 2 6
3 < 6 :
3 > 2 : 3 放在 2 之后
第四次参与排序的数据:4 7 5
第四次循环:
当前的数:4
当前已有序列表 ...
选择排序
选择排序
直观且简单的一种排序,将未排序的头个元素与后面的比较,选择最小的放到最前。时间复杂度为O(n^2^),空间复杂度为O(1)。
例如:[4, 7, 2, 5] ——> 将4与后面的7, 2, 5比较——> 把最小的2与4的位置调换 ——> 将第二位的7与后面的数字比较 ——> 将7与后面数字中最小的4调换 …… 以此类推。
代码实现:
1234567891011121314void selectionSort(int* nums, int numsSize) { int i, j, min; for(i = 0; i < numsSize - 1; ++i) { min = i; for(j = i + 1; j < numsSize; ++j) { if(nums[j] < nums[min]) { min = j; } } int ...
Welcome! This is my first blog.
Welcome!
Welcome to my blog!
I will post some articles here. They might be useful, but I think most of them will be useless but funny. My native language is Chinese, so most of the articles will be written in Chinese. But I may translate some of them into English in order to improve my ability.
Thank you for spending time reading. See you again!
欢迎来到我的博客!
欢迎!
我希望在这里分享一些有用或者有趣的东西。
作为一名技术小白,我希望有一个地方能够记录我的成长,并且同时能够帮助一些有需要的人。所以想到了搭建一个属于我自己的博客。在查阅了众多资料、解决了各种困难后,这个网站终于初现雏形。虽然他现在还很简陋,但是我相信随着我的进步,他一定会更加完善,最后变成一个优雅的个人博客。我很期待那一天的到来。
也欢迎大家访问、留言(后面会开放的……吧),希望能与小白共同成长,让大犇驻足相助~
博客0.0测试版(因为当时没有截图所以找了一张相近的顶一下)
博客1.0测试版
博客1.1发布版
Hello World
Welcome to a website created with Hexo! This is the very first post. To memorialize it, I named him “Hello World”.
Check documentation for more info. If get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1$ hexo new "My New Post"
More info: Writing
Run server
1$ hexo server
More info: Server
Generate static files
1$ hexo generate
More info: Generating
Deploy to remote sites
1$ hexo deploy
More info: D ...