思路:[256,35,96,2,34,65,732,653,20] 对于一个数组,我们不再像插入排序那个把它当成两个部分, 而是引入一个gap,假设gap=4,就会有 256 34 20 35 65 96 732 2 653 分成了上面所示的4个子序列 对于这些子序列进行插入排序,即 20 34 2 ...
分类:
编程语言 时间:
2020-05-17 10:38:17
阅读次数:
81
冒泡排序|插入排序 标签(空格分隔): 数据结构和算法 冒泡排序 冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作 $array = [ ...
分类:
编程语言 时间:
2020-05-16 18:36:14
阅读次数:
64
排序最关键的地方 1复杂度 (复杂度包括时间复杂度与空间复杂度) 2稳定性 3输入数据的特征是否会对复杂度造成影响即排序算法的复杂度和输入数据的特征有关系 插入排序法 我们只将大于temp的值向后移动,已经拍好序的元素不会直接交换位置,所以这个排序是是分稳定的 时间复杂度 1+2+3+4+……+n- ...
分类:
编程语言 时间:
2020-05-13 19:57:53
阅读次数:
65
输入 6 5 2 4 6 1 3 输出 1 2 3 4 5 6 代码 #include<iostream>using namespace std;void insertionsort(int a[],int n) { int i, j, temp; for (int i = 1;i < n;i++) ...
分类:
编程语言 时间:
2020-05-13 19:50:43
阅读次数:
50
所有排序都是从小到大进行排序 1插入排序 插入排序的思想主要是,将[a1,a2,a3,a4....ai.......an]前ai-1个序列看成有序的,然后用第ai个数与前面的数进行比较,找到位置进行插入 int i,j,temp;//a[len] for(i=1;i<len;i++){//假设a[0 ...
分类:
编程语言 时间:
2020-05-06 18:09:33
阅读次数:
67
统计大串中小串出现的次数(新的解决方案) StringBuffer类 StringBuffer类的概述 我们如果 对字符串进行拼接操作 ,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而 StringBuffer 就可以解决这个问题。 线程安全的可变长度的字符序列 StringBu ...
分类:
编程语言 时间:
2020-05-01 20:55:58
阅读次数:
72
https://github.com/hotwater99/practice_datastructure_and_algorithm.git《数据结构与算法分析——C语言描述》机械工业出版社,原书第2版,第7章N=100N=1000N=10000N=100000插入排序 insertion sort... ...
分类:
编程语言 时间:
2020-04-29 20:20:05
阅读次数:
98
一、冒泡排序 就是两两之间?相互比较?前面的大于后面的则交换 重复这个操作。 1.交换两个变量的几种方法 二、插入排序 三、选择排序 就是先假设第一个是最小的,循环遍历,将第一个与所有的比较,当有人比他大,就把那个数的索引值换成最小索引值,再进行比较,这样每一轮都会得到一个最小值,知道length ...
分类:
编程语言 时间:
2020-04-28 20:16:48
阅读次数:
54
一:解题思路 Time:O(n^2),Space:O(1) 二:完整代码示例 (C++版和Java版) C++: template <typename T> static void Insert(T array[],int len,bool min2max=true) { if(len==0) re ...
分类:
编程语言 时间:
2020-04-28 13:29:17
阅读次数:
60
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序的基本思想是:首先选择一个元素选择步长将数组划分为若干小组,对各个小组分别进行排序,然后不断将步长缩小,不断分组和排序,直到后的步长为1,对所有的元素进行排序,此时,经过前期的排序工作,能够减少全 ...
分类:
编程语言 时间:
2020-04-28 00:41:27
阅读次数:
56