原理 直接插入排序:每一步将一个待排序的记录,插入到前面已经排好序的有序列中去,直到插完所有元素为止。 流程 已知数组【3,1,4,2,7,8,6,5】,(当前元素和他之前的元素进行比较) 第一次排序:从索引1位置开始,比较 3 和 1,3 > 1,3 和 1 交换,结果为【1,3,4,2,7,8, ...
分类:
编程语言 时间:
2018-11-03 01:50:37
阅读次数:
135
常用的八种排序算法 1.直接插入排序 我们经常会到这样一类排序问题:把新的数据插入到已经排好的数据列中。将第一个数和第二个数排序,然后构成一个有序序列将第三个数插入进去,构成一个新的有序序列。对第四个数、第五个数……直到最后一个数,重复第二步。如题所示: 直接插入排序(Straight Insert ...
分类:
编程语言 时间:
2018-10-19 00:15:29
阅读次数:
188
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是基于插入排序的以下两点性质而提出改进方法 ...
分类:
编程语言 时间:
2018-10-12 21:20:33
阅读次数:
130
排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。 先定义个交换数组元素的函数,供排序时调用 简单选择排序 简单选择排序是 ...
分类:
编程语言 时间:
2018-10-12 13:44:14
阅读次数:
203
/* Name: selectSort and insertSort Copyright: nyist Author: 润青 Date: 01/10/18 19:30 Description: 实现了简单选择排序与直接插入排序 */ #include int a[100]; int n; void ... ...
分类:
编程语言 时间:
2018-10-01 20:39:38
阅读次数:
136
算法分析: (1)时间复杂度 从时间上比较,折半查找比顺序查找快,所以就平均性能来说,折半插入排序优于直接插入排序。 折半插入排序所需要的关键字比较次数与待排序序列的初始排列无关,仅依赖于记录的个数。不论初始序列情况如何,在插入第i个记录时,需要经过logi+1(向下取整+1)次比较,才能确定它插入 ...
分类:
编程语言 时间:
2018-09-22 16:57:26
阅读次数:
166
算法特点: (1)是稳定排序 (2)可用于链式存储结构 (3)移动记录次数较多,算法平均性能比直接插入排序差。当初始记录无序,n较大时,此算法不宜采用。 ...
分类:
编程语言 时间:
2018-09-22 16:57:03
阅读次数:
180
小朋友学数据结构(8):直接插入排序 (一)基本思想 在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 1-1.jpg (二)C语言代码实现 #include<stdio.h> ...
分类:
编程语言 时间:
2018-09-08 00:48:55
阅读次数:
245
小朋友学数据结构(9):希尔排序 (一)基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 (二)例子 有一个数组,其原始数组为: 2-1.png 取初始增量gap = len ...
分类:
编程语言 时间:
2018-09-08 00:48:01
阅读次数:
211
小朋友学数据结构(4):归并排序 (一)基本思想 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 7-1.jpg (二)代码实现 import java.util.Arrays; p ...
分类:
编程语言 时间:
2018-09-08 00:46:49
阅读次数:
238