经典排序算法
我只想变得更强
目前正在学习java,欢迎小伙伴和我一起探讨相关问题
展开
-
经典排序算法之二:选择排序
一、选择排序的思想及优化思路(升序为例) 思想:假设给定一个大小为n的数组,从中选出最大的值(记录下标)与下标n - i的值进行交换(i∈[1, n - 1],i为循环次数),即遍历一次交换一次,每次遍历确定一个最大值。 优化思路:使用一种快速查找最值的方法可降低选择排序的时间复杂度,例如使用堆这种数据结构,可在O(logn)的情况下找到最值 二、代码实现 普通代码,cmp()功能为array[maxIndex] - array[begin],swap()功能为交换两个下标所在值。 for (int end原创 2020-09-16 17:50:25 · 158 阅读 · 0 评论 -
经典排序算法之一:冒泡排序
1.排序算法的分类 1 分为比较排序(Comparison Sorting)如冒泡、选择、插入、归并、希尔、堆、快速排序与非比较排序。 二、冒泡排序的思想及优化思路(升序为例) 思想:从头开始比较一对相邻元素,若第一个元素大于第二个元素则交换位置,执行完一次遍历后,最末尾元素即最大值,忽略上次最大值,重复执行,直到全部数据有序。 优化思路一:当全部数据处于有序状态时,可通过一次遍历确定有序状态,可直接结束循环。 优化思路二:当最后部分数据有序且有序部分最小值大于无序部分最大值(有序部分原创 2020-09-15 15:59:04 · 369 阅读 · 0 评论