算法
666呀
点点滴滴会聚江河湖海
展开
-
算法(一)冒泡排序
排序原理当我们对一个数组进行冒泡排序的时候,我们可以把数组中的每个元素看做是一个一个的气泡,元素值较大的我们看成是重气泡,元素值较小的我们看成是轻气炮。根据生活常识我们知道,在水里,轻气炮肯定排在重气泡的前边,我们如何将轻重气泡按照我们知道的生活常识方式进行排序呢。这种这种排序的方式我们成冒泡排序。所谓的冒泡排序就是对数组中的元素进行两两比较,如:第一次排序的第一步是我们对数组下标为0和1的两...原创 2019-08-27 16:42:28 · 221 阅读 · 0 评论 -
算法(二)选择排序
排序原理所谓的选择排序就是从给定的数组中未排序的元素中依次找出最小值,并将最小值依次放在已经排好序的元素后边,直到全部排完。排序过程为,首先找出数组中最小值的下标,然后将数组中第一个元素与最小值交换位置,然后在剩余未排序的元素中找到最小值的下标,并将数组的第二个元素与最小值交换位置,然后重复上述步骤,知道所有元素排序完成。时间复杂度排序代码...原创 2019-08-27 16:43:10 · 268 阅读 · 0 评论 -
算法(三)插入排序
排序原理所谓的插入排序跟我们打牌在调整我们手里牌的顺序原理是一样的,也就是说将未排序的元素依次插入到前边已经排好序的元素中适当的位置,知道全部插完为止。时间复杂度排序代码public class InsertionSort { /** * 插入排序优化版本 * 适用场景:数组接近有序的情况下 */ public void inserti...原创 2019-08-27 16:43:27 · 145 阅读 · 0 评论 -
算法(四)希尔排序
希尔排序主要是将数组中的元素按照一定的步长进行分组,步长相同的元素被分为一组,改组是逻辑上的分组,并不改变元素所在数组中的位置,分组以后在按照插入排序对每个组进行排序,当每个组排序完成后,在将步长递减,当步长依次递减到1时,该数组就已经是排好序的了。原创 2019-08-27 16:44:49 · 324 阅读 · 0 评论 -
算法(五)快速排序
排序原理快速排序采用的是分治策略,也叫分治法。原理就是将一个大问题拆解成与原问题相同的小问题,递归解决小问题,将小问题的解融合长大问题的解。快速排序的主要思想就是随机选取一个标量将它放到已经排好序中它应该所在的位置上,什么叫标量应该所在的位置呢,也就是该标量的左边全部小于该标量,该标量的右边全部大于该标量,然后分别再对标量两边的数组进行以上逻辑处理,以此逻辑递归下去,直到所有元素有序为止。具体...原创 2019-08-27 18:45:31 · 306 阅读 · 0 评论 -
散列表(一)解决冲突的四种办法
一)哈希表简介非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。 哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。哈希函数:一般情况下,需要在关键字与它在表中的存储位置之间建立一个函数关系,以f(key)作为关键字为key的记录在表中的位置,通常称...原创 2019-08-28 15:50:54 · 6339 阅读 · 0 评论