随笔分类 -  算法

关于算法的一些笔记
摘要:快速排序的平均时间复杂度是O(n log n)。 一开始随机挑选一个基准值,这里固定选的是数组第一个元素,然后有左右两个指针,分别向中间开始靠拢,过程中,左指针遇到比基准值大的,那就和右指针交换,相同的右指针也是,左右交替进行,在左右指针相遇的地方,也就是基准值所在的地方,这时候基准值的左侧都比基准 阅读全文
posted @ 2021-02-26 11:40 huang1993 阅读(25) 评论(0) 推荐(0) 编辑
摘要:这次的代码是在一篇博客找到的,忘记是哪个了,所以原主人希望指出转载的话,请联系。 归并排序是用了分治的思想,就是将大问题不断拆分成与原问题相同但是规模更小的问题,当将每个小问题都解决后,大问题自然就解决了。 在排序中,是将数组拆成两部分,然后将这两个部分继续拆分,直到拆成一个,因为一个元素默认就是有 阅读全文
posted @ 2021-02-26 11:29 huang1993 阅读(66) 评论(0) 推荐(0) 编辑
摘要:希尔排序是插入排序的改良版本,插入排序每次比较都会多一个确定元素,导致下一次比较就会多一次小循环,而且当小的元素在数组的靠右时,要将小元素移到左侧,需要比较的次数会很多,那么希尔排序就将本来是相邻元素比较,改为跨元素比较,那么右侧的小元素也会很快来到左侧,减少比较的次数。 假设跨元素的步距是数组长度 阅读全文
posted @ 2021-02-26 11:13 huang1993 阅读(58) 评论(0) 推荐(0) 编辑
摘要:插入排序其实就是为元素确定它的位置。从数组第二个元素开始,它的左边的元素都是有序的,然后为当前元素确定它在左边序列中的位置,也就是找到一个比当前元素小的元素,那么它的右边的位置就是当前元素的位置;每次比较都会多一个元素,比较次数也就多一次,平均时间复杂度是O(n^2)。 1 public class 阅读全文
posted @ 2021-02-26 10:56 huang1993 阅读(49) 评论(0) 推荐(0) 编辑
摘要:从数组第一个元素开始,与剩下元素作比较,找出最小的元素,这是一次大循环;每次需要确定最小元素就会有一个小循环来查找元素,每次大循环中确定一个最小元素,那么每次小循环的次数就少一次,平均是O(n^2)时间复杂度。 1 public class SelectionSort implements IArr 阅读全文
posted @ 2021-02-26 10:45 huang1993 阅读(49) 评论(0) 推荐(0) 编辑
摘要:大循环中,每次与相邻的元素进行比较,确定一个最大元素,最大元素升序右移,一个小循环确定一个最大元素,那么每次小循环的次数也会少一次,平均时间复杂度是O(n^2)。 1 public class BubbleSort implements IArraySort{ 2 3 4 @Override 5 p 阅读全文
posted @ 2021-02-26 10:34 huang1993 阅读(43) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示