数据结构和算法学习--插值查找算法(1)插值查找原理介绍:插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。(2)将折半查找中的求mid索引的公式,low表示左边索引left,hight表示右边索引right.key就是前面我们讲的findVal(3)int mid = low + (high - low) (key - arr[low]) / (arr[high]...
数据结构和算法学习--二分查找算法一、二分查找请对一个有序数组进行二分查找{1,8,10,89,1000,1234},输入一个数看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。二、二分查找算法的思路分析:1.首先确定该数组的中间的下标mid=(left+right)/22.然后让需要查找的数findVal和arr[mid]比较findVal>arr...
数据结构和算法学习--常用排序算法总结和对比相关术语解释:1)稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;2)不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;3)内排序:所有排序操作都在内存中完成;4)外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;5)时间复杂度: 一个算法执行所耗费的时间。6)空间复杂度:运行完...
数据结构和算法学习--基数排序一、基数排序(桶排序)介绍(1)基数排序(radix sort)属于“分配式排序”(distribution sort),又称"桶子法"(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用(2)基数排序法是属于稳定性的排序,基数排序法是效率高的稳定性排序法(3)基数排序(Radix S...
数据结构和算法学习--快速排序一、快速排序法介绍快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。二、快速排序法示意图三、快速排序法应用实例要求:对[-9,78,0,23,-567...
数据结构和算法学习--归并排序一、归并排序介绍归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案“修补”在一起,即分而治之)二、归并排序思想示意图1-基本思想三、归并排序思想示意图2-合并相邻有序子序列再...
数据结构和算法学习--希尔排序一、简单插入排序存在的问题我们看简单的插入排序可能存在的问题.数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是:{2,3,4,5,6,6}{2,3,4,5,5,6}{2,3,4,4,5,6}{2,3,3,4,5,6}{2,2,3,4,5,6}{1,2,3,4,5,6}结论: 当需要插入的数是较小的数时,后移的次数明显增多...
数据结构和算法学习--插入排序一、插入排序介绍插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。二、插入排序法思想插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,元素表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素...
数据结构和算法学习--选择排序一、基本介绍选择排序属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。二、选择排序的思想选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换,第三次...