【算法正确性】所有的输入,都能停止,并有有正确的输出 【算法选择】易懂:),优雅:),高效:)(时间+空间) 【插入排序】左边的永远是已经拍好序的best case: T(n) = an + b; worst case: T(n) = an^2 + bn + c 【θ】θ(g(n)) = {f(n) ...
分类:
编程语言 时间:
2020-01-24 16:04:44
阅读次数:
80
插入这词太具有欺骗性,并不是说在已经生成的数组中又插进来一个什么新的数,而是从数组元素中选出一个“标杆”元素(按索引遍历),让这个元素和之前的元素进行比较,直到找出一个元素大于这个“标杆”元素进行交换。 这样一来,我们大概可以构建出两层循环 外循环负责遍历数组,每次选出新的标杆元素, 内层while ...
分类:
编程语言 时间:
2020-01-23 15:28:19
阅读次数:
96
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序 ...
分类:
其他好文 时间:
2020-01-22 10:38:05
阅读次数:
60
转跳点 :🐏 1035 插入与归并 (25分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元 ...
分类:
其他好文 时间:
2020-01-21 16:31:41
阅读次数:
104
插入排序(递归) #include <stdio.h>#include <stdlib.h> void fun(int *a, int num){ int i = num - 1; int key = a[num]; while (i>0 && a[i]>key) { a[i + 1] = a[i] ...
分类:
编程语言 时间:
2020-01-16 14:21:53
阅读次数:
163
目录 要点算法分析 直接插入排序的算法性能 时间复杂度 空间复杂度 算法稳定性完整参考代码 JAVA版本参考资料相关阅读 要点 直接插入排序是一种最简单的插入排序。 插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。 在讲解直接插入排序之前,先让我们 ...
分类:
编程语言 时间:
2020-01-16 10:57:01
阅读次数:
74
插入排序是最常用的排序之一。 在输入规模较小的时候,插入排序的性能较好。 最好情况下插入排序的时间复杂度是O(n),平均情况则为O(n2)。 插入排序是稳定的排序算法之一。 基本思路为从第二个元素开始,依次插入前面已经排好序的序列,利用循环不变式很容易理解。 代码如下: 1 void Inserti ...
分类:
编程语言 时间:
2020-01-14 19:00:43
阅读次数:
91
博主最近在恶补基础知识,算法必然是必不可少的,那么就从经典排序算法开始吧!(图源网络,侵删),没有列出全部,因为在期末考试囧 代码太多,就只显示了最关键的部分 1. 冒泡排序 实现思路: (1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。 (2)这样对数组的第0个数据到N ...
分类:
编程语言 时间:
2020-01-14 13:13:53
阅读次数:
61
题目3 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 解析 1.哈希表。用一个 ...
分类:
编程语言 时间:
2020-01-13 23:51:20
阅读次数:
88
1.初级排序算法 1.1我们关注的主要对象为重拍数组元素的算法。,其中每个元素有个主键,将主键按照某种方式排列。在java中元素通常都是对象,对主键描述往往通过comparable接口。 一般排序模板 public class Example{ public static void sort(Com ...
分类:
编程语言 时间:
2020-01-12 14:59:26
阅读次数:
92