Day 18 Sort

演算法在程序设计中扮演重要的角色,而演算法和时间复杂度有很大的关联,
时间复杂度本意为程序执行的时间,写出好的演算法就会有好的时间复杂度,
程序就会执行的有效率 ; 此外还有空间复杂度,指演算法在计算机内执行时所需的储存空间。
今天要介绍三个基本的演算法:气泡排序、选择排序、插入排序。

1 气泡排序:是指对n个数进行排序,每次都是由前一个数跟後一个数比较, 每执行一轮回圈,就可以将最小的数排到最上面,回圈n-1轮,即可完成排序,程序执行如下:
https://ithelp.ithome.com.tw/upload/images/20210930/20140456AEuPH9eV15.png
使用swap方法将阵列里的资料一一比对,执行完回圈阵列由小到大排好。

2 选择排序:在每一次回圈内都由一个数去跟所有的数都比较一次,每次执行程序都挑出较小的数字出来进行比较,再通过一次交换将最小的数放在最前面,通过n-1次回圈之後完成排序。对於气泡排序来说,比较的次数并没有改变,但是资料交换的次数比气泡排序少很多,程序执行如下:
https://ithelp.ithome.com.tw/upload/images/20210930/20140456csofjePIcM.png

i控制回圈次数,从零开始,并且要小於阵列的长度,j控制回圈次数,从一开始,因为要和前一个数比,所以不能从零开始,才不会重叠比较,最後if条件式,後面一个数比前面小的话,则交换,把大的数往後放。

3 插入排序:首先先预设阵列的第一个数是已经排序过的,接着从阵列里面
然後取下一个数,与已经排序的数按从後向前的顺序依次比较,如果该数比当前位置排好序的数小,则将排好序的数的位置向後移一位,直到排序完成,程序码如下:
https://ithelp.ithome.com.tw/upload/images/20210930/20140456GfoREku2F4.png


<<:  使用 Domain Driven Design 来进行架构设计

>>:  Day16 filter过滤器

HTML笔记(01)-前端、後端和全端

那天跟朋友聊天,我跟他说我的同学是打程序的所以薪水很高。他很不解,什麽叫做打程序的?我就说就资料探勘...

[第二十五天]从0开始的UnityAR手机游戏开发-输出32位元APP

点击File→Build Settings...会跳出Build Settings视窗,在Platf...

DAY24 - [React hook] component 零组件

今日文章目录 前言 参考文章 前言 昨天只有讲到一点点function component,这是我...

Day 23:二元树分支总和 sums of the branches

今天这题题目是国外论坛分享的面试题, 其实也是LeetCode-Path Sum的衍生题,直接来刷题...

[Day 29]-【STM32系列】实作-步进马达 + ULN2003 控制

今天介绍步进马达,疑?昨天不是才说过马达吗?昨天的是伺服马达,今天的则是伺服马达 这两者有甚麽不一样...