前情回顾:直接插入排序(对插入排序不熟悉的建议先阅读此文) 一天,一尘拿着扑克自己在那玩,刚被师傅看见了 首先它把较大的数据集合分割成若干个小组(逻辑上分组),然后对每一个小组分别进行插入排序,此时,插入排序所作用的数据量比较小(每一个小组),插入的效率比较高 可以看出,他是按下标相隔距离为4分的组 ...
分类:
编程语言 时间:
2019-10-15 10:10:29
阅读次数:
252
[TOC] 从直接插入排序到希尔排序 直接插入排序,它的原理就是把前i个长度的序列变成有序序列,然后循环迭代,直至整个序列都变为有序的。但是说来说去它还是一个时间复杂度为(n^2)的算法,难道就不能再进一步把 时间复杂度降低一阶 么? 希尔排序是希尔(Donald Shell)于1959年提出的一种 ...
分类:
编程语言 时间:
2019-10-14 12:30:07
阅读次数:
111
代码 C语言 include define N 9 / 输出数组 / void OutPrint(int A[]) { int i; for (i = 1; i ...
分类:
编程语言 时间:
2019-10-11 01:08:04
阅读次数:
69
先来看看8种排序之间的关系: 一、直接插入排序 代码如下 二、希尔排序 第三、简单选择排序 第四、堆排序 第五、冒泡排序 第六、快排 第七、归并排序 第八、基数排序 参考:https://blog.csdn.net/jiangwei0910410003/article/details/3826178 ...
分类:
编程语言 时间:
2019-10-10 19:51:26
阅读次数:
102
1 /*有一个带头结点的单链表,编写算法使其元素递增有序*/ 2 /* 3 算法思想:利用直接插入排序的思想,先构成只含有一个数据结点的有序单链表,然后依次插入 4 剩余结点到合适的位置。 5 */ 6 void Sort(LinkList& L) 7 { 8 LNode *p = L->next,... ...
分类:
编程语言 时间:
2019-10-10 00:06:48
阅读次数:
559
排序是数据处理中十分常见的操作,现代高级语言都有现成的n种排序算法。但了解它们的代码,对计算机思维有帮助。 简单选择排序 每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。 无论数组原始排列如何,比较次数都不变;变的是交换次数。完全有序 ...
分类:
编程语言 时间:
2019-10-03 22:21:44
阅读次数:
119
恢复内容开始 插入排序是在源数据已经有序的情况下进行排序。时间复杂度O(N^2),稳定的 直接插入排序 代码如下 二分插入 前提也是原数组是有序的 希尔排序 不再是固定的二分,分段数d在不断的缩小,直到为1 ...
分类:
编程语言 时间:
2019-10-03 16:32:13
阅读次数:
83
插入排序的基本思想:每次将一个待排序的元素按其关键字大小插入到前面已经排好的子序表中的适当位置,直到全部元素插入完成为止。本次介绍直接插入排序,折半插入排序和希尔排序。 1 直接插入排序 直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和 ...
分类:
编程语言 时间:
2019-10-01 18:44:59
阅读次数:
97
1 package com.example.demo; 2 3 public class InsertSort { 4 public void insertSort(int[] arr) { 5 int i, j; 6 for (i = 0; i < arr.length; i++) { 7 int... ...
分类:
编程语言 时间:
2019-09-23 22:23:44
阅读次数:
107