跟随视频学习了一些常见的排序,把自己第二天能理解的记录下来,万一以后忘记了呢? def linear_search(li, target): """ 线性查找 """ for ind, tar in enumerate(li): if tar == target: return ind else: ...
分类:
编程语言 时间:
2020-07-26 00:48:40
阅读次数:
57
插入排序(Insertion Sort) 原理:将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素。 核心思想:取未排序区间中的元素,在已排序区间中找到合适的位置将其插入,并保证已排序区间的数据一直有序。重复这个过程,直到未排序区间中元素为空,算法结束。 算法描述: 一般 ...
分类:
编程语言 时间:
2020-07-24 21:10:15
阅读次数:
56
《数据结构与算法分析C语言描述》-第二版 ###1.插入排序 插入排序由N-1趟排序组成,第P趟排序之前,前P个元素已经排好序。第P趟排序时,前P个元素中大于第P+1个元素的数全部右移一位,然后将第P+1个元素插入对应的位置。 插入排序的时间复杂度为$O(N^2)$。 void InsertionS ...
分类:
编程语言 时间:
2020-07-24 16:52:27
阅读次数:
66
常用排序算法: 冒泡排序 插入排序 快速排序 选择排序 排序算法的时间&&空间复杂度 排序算法的稳定性 冒泡排序——bubbleSort 是一种简单的排序算法,重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把他们交换。走访数列的工作是重复的进行直到没有需要交换。 如果两个数关系不正确 ...
分类:
编程语言 时间:
2020-07-24 10:07:24
阅读次数:
101
1、最好情况、最坏情况、平均情况时间复杂度冒泡、插入都是O(n^2);快排、归并都是O(nlogn);桶、计数、基数都是O(n)2、排序算法的内存消耗原地排序算法:空间复杂度是 O(1) 的排序算法;冒泡排序,插入排序3、排序算法的稳定性稳定排序:如果待排序的序列中存在值相等的元素,经过排序之后,相 ...
分类:
编程语言 时间:
2020-07-22 01:58:40
阅读次数:
69
1.1概述 1959年Shell发明,第一个突破O(n^2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 1.2描述 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1; 按增量序列个数k,对序列进行k 趟排序; ...
分类:
编程语言 时间:
2020-07-21 23:14:48
阅读次数:
77
一、引言 今天学习第三种排序算法:直接插入排序,以前没怎么详细了解过,今天来看看图解一下~~ 二、直接插入算法 插入算法工具类 /** * 直接插入排序算法工具类 */ public class ChaRuUtil { /** * 直接插入排序【对外暴露静态方法】 */ public static ...
分类:
编程语言 时间:
2020-07-21 22:02:10
阅读次数:
54
排序逻辑 每次遍历,保证前面的队列是有序的 初始队列 第一轮 第二轮 第三轮 第四轮 代码示例 public static void insertSort(int[] arr){ //从第二个数开始遍历所有的数字,每一次遍历保证前面的序列是有序的 for(int i=1;i<arr.length;i ...
分类:
编程语言 时间:
2020-07-21 01:03:43
阅读次数:
61
插入排序(Insertion sort) 插入排序原理 插入排序原理:插入排序的原理类似于平时打扑克牌进行排序时的原理 把所有的元素分为两组,一组为已排序的另外一组为没有排序的(如果没有已排序的,默认第一个元素为已排序的) 找到未排序的组中的第一个元素,向已经排序的组中进行插入 倒叙遍历已经排序的组 ...
分类:
编程语言 时间:
2020-07-19 23:25:54
阅读次数:
64
内部排序:数据记录在内存中进行排序外部排序:待排序文件较大,需要访问外存常见的内部排序:插入排序(直接插入、折半插入、希尔排序)、交换排序(冒泡、快排)、选择排序(简单选择、堆排序)、归并排序(2路归并)、基数排序外排:归并排序(多路归并)、各种内排的性能比较:插入排序每次将一个待排序的记录按关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成每一轮能够确定一个最终位置的记录,某时刻的状态
分类:
编程语言 时间:
2020-07-19 16:23:30
阅读次数:
50