本文完整源码详见Github:https://github.com/UniqueDong/algorithms.git前面我们学习了时间复杂度O(n2)的经典排序算法:冒泡排序、插入排序、选择排序,今天我们来学习时间复杂度为O(nlogn)的归并排序,这种排序思想也更加常用。归并排序和快速排序都用到了分治思想。作为一种典型的分而治
分类:
编程语言 时间:
2020-06-05 00:41:35
阅读次数:
70
关注公号「码哥字节」修炼技术内功心法,完整代码可跳转GitHub:https://github.com/UniqueDong/algorithms.git摘要:排序算法提多了,很多甚至连名字你都没听过,比如猴子排序、睡眠排序等。最常用的:冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、基数排序、桶排序。根据时间复杂度,我们分三类来学习,今天要讲的就是冒泡、插入、选择排序算法。排序算法时
分类:
编程语言 时间:
2020-06-05 00:28:49
阅读次数:
72
# 了解基本数据结构 - 数组和链表 数组:- 内存是连着的,元素不能随意添加存储。 - 优势:读取元素 (因为地址都是已知的) -运行时间: ...读取O(1) 地址已知,读取很快 ...插入O(n) 插入元素,需将后面的元素都向后或向前移动一位 ...删除O(n) 删除元素后,后面的元素都向前移 ...
分类:
编程语言 时间:
2020-06-04 19:59:31
阅读次数:
93
一,选择排序的思想: ①先假设第一个数最小的,然后拿这个数去和后面的n个数依次进行比较,②如果发现有比最小值还小的数 则通过中间变量记录下下标和值,③然后继续拿这个最小值往后进行比较,如果又发现比最小值还小的值 就执行第②步,直到比完最后一个元素④最后把存在中间变量的最小值和最小值的下标 和假设的那 ...
分类:
编程语言 时间:
2020-05-31 17:37:48
阅读次数:
61
选择排序算法是经典算法之一,你可以想象你在打牌,每次拿到的一张牌就是待排序的一张,你需要每一次跟之前的牌进行比较,然后将这张牌插入到合适的位置。那么选择排序也是一样,将整个数组看成两个部分,有序部分和无序部分。现在需要将无序部分的数字跟有序部分进行比较,插入到正确的位置下列代码是插入排序的内层循环:while(insertIndex>=0&&insertVal<arr[
分类:
编程语言 时间:
2020-05-27 23:17:06
阅读次数:
109
/*选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。*/#include <stdio.h>int mai ...
分类:
编程语言 时间:
2020-05-27 11:54:49
阅读次数:
120
C程序设计实验报告六 实验项目:7.3.1 1冒泡排序法排序;7.3.1 2选择排序法排序; 7.3.2杨辉三角;7.3.2 2计算天数;7.3.3 判断回文数 姓名:罗志明 实验地点:家中 实验时间:2020.5.10 2020.5.19 一、实验目的与要求: 1、巩固学生对一维数组这种数据结构的 ...
分类:
编程语言 时间:
2020-05-24 13:53:17
阅读次数:
88
C程序设计实验报告 姓名:熊毅 实验地点:家 实验时间:2020.5.19 实验项目: 7.3.1练习1 冒泡排序法的运用 7.3.1练习2 选择排序法的运用 7.3.2练习1 输出指定行数的杨辉三角 7.3.2练习1 输出指定行数的杨辉三角(等腰) 7.3.2练习2 输入年月日计算是该年的第几天 ...
分类:
编程语言 时间:
2020-05-24 11:47:57
阅读次数:
46
实操才能去感受自己的缺陷所在,虽然在算法这一块很弱势,但不断坚持,改变自己。 ...
分类:
其他好文 时间:
2020-05-23 21:53:15
阅读次数:
83
以上快速排序和归并排序的空间复杂度不正确 图2没有的参考图1,以图2为准(对,就是懒得重新画图了) 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序 O ...
分类:
编程语言 时间:
2020-05-23 20:29:05
阅读次数:
74