排序思想 1.从第一个元素开始,我们认为第一个元素已经被排序 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 3.如果该元素(已排序)大于新元素,将该元素移到下一位置 4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置,将新元素插入到该位置 5.执行第二步骤,直到所有元素遍历完 ...
分类:
编程语言 时间:
2019-01-19 15:13:13
阅读次数:
184
直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素;排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的有序表,重复n-1次完成整个排序过程。 实例: 0.初始状态 3,1,5,7,2,4,9,6(共8个 ...
分类:
编程语言 时间:
2019-01-08 19:18:18
阅读次数:
130
希尔排序就是对直接插入排序的一个优化。比如有这么一种情况:对一个无序数组进行从小到大的排序,但是数组的最后一个位置的数是最小的,我们要把它挪到第一个位置,其他位置的都要往后移动,要是这个数组非常大,那么直接插入排序的开销就非常大。 现在有一个array,希尔排序就是设定一个增量incrementNu ...
分类:
编程语言 时间:
2019-01-08 12:15:58
阅读次数:
185
#include "stdio.h" #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType r[MAXSIZE+1]; int length; }SortList; void crelist(SortList *L) {... ...
分类:
编程语言 时间:
2019-01-03 10:52:54
阅读次数:
202
首先看一下内部排序分类以及各个算法的时间复杂度和空间复杂度 一、插入排序 1、直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素, ...
分类:
编程语言 时间:
2019-01-03 10:52:27
阅读次数:
256
概述 希尔排序是插入排序的一种更高效的改进版本. 希尔排序的基本思想是: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 就是将插入排序分组一下 分组排序步骤如下: 其时间空间复杂度为 ...
分类:
编程语言 时间:
2019-01-02 23:21:32
阅读次数:
290
输入'd','c','a','b','e'这5个字符,然后用直接插入排序法,按照其ascii码值从小到大排序,并打印在控制台 代码实现: ...
分类:
编程语言 时间:
2019-01-02 20:11:36
阅读次数:
151
一.排序算法 1.插入排序 1) 直接插入排序:(插入类) 最好情况(顺序有序): 1)比较次数: $\sum_{i=2}^{n} 1=n-1$ 2)移动次数: 0 最坏情况(逆序有序): 1)比较次数: $\sum_{i=2}^{n} i=\frac {(n+2)(n-1)}{2}$ 2)移动次数 ...
分类:
编程语言 时间:
2018-12-27 18:59:21
阅读次数:
273
排序(2):直接插入排序 一、前言 直接插入排序(Insertion Sort)序是一种最简单的插入排序。为简化问题,我们下面只讨论升序排序。 二、算法思想 插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。 动态效果示意图: 以上的过程,其实就是典 ...
分类:
编程语言 时间:
2018-12-25 22:26:25
阅读次数:
289
直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。 设数组为a[0…n-1]。 1. 初始时,数组全为无序区为a[0..n-1]。令i=0 2. ...
分类:
编程语言 时间:
2018-12-25 13:14:12
阅读次数:
242