![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
数据结构与算法,主要以java语言实现
jettery
小小的编程好爱者
展开
-
直接选择排序
*基本思想 第一次从n个元素中选最小的放在下标为0的位置,第二次从n-1个元素中选取最小的放在小标为1的位置,依次类推 *排序特征 排序类别:选择排序 时间复杂度:O(n²) 空间复杂度:O(1) 稳定性:不稳定 *适用场景 由于其时间复杂度大,且不稳定,生产环境不推荐使用此算法 *代码实现 public static void selectSort(int[] arr) {...原创 2019-12-08 10:11:15 · 72 阅读 · 0 评论 -
快速排序
*基本思想 任取一个元素(一般取第一个)作为基准元素,一趟排序过后,得到两个区间,第一个区间的元素均小于基准元素,第二个区间的元素均大于基准元素,然后按照同样的思想再对两个区间做排序。 *排序特征 排序类别:交换排序 时间复杂度:O(N * logN) 空间复杂度:O(logN) 稳定性:不稳定 *适用场景 待排序元素个数n较大,对稳定性不做要求时建议使用 *代码实现 /**...原创 2019-12-07 10:14:42 · 224 阅读 · 0 评论 -
冒泡排序
*基本思想 从后向前依次比较相邻两元素的大小,若发现逆序则交换。第一趟会找出最小值,第二趟会找出第二小,以此类推。若一趟过后没有发生过交换,则说明数组已经有序,则直接退出循环(可设置一个标记flag,记录是否发生过交换) *排序特征 排序类别:交换排序 时间复杂度:O(n²) 空间复杂度:O(1) 稳定性:稳定 *适用场景 算法简单易懂,数据量小,元素基本有序,对稳定性有要求 *...原创 2019-12-01 10:21:34 · 126 阅读 · 0 评论 -
直接插入排序
*基本思想 把n个待排序的元素分成一个有序表和一个无序表,开始时有序表中只包含一个元素(通常取第一元素),无序表n-1个元素,排序时每次从无序表中取出第一个元素,把它和有序表中的元素依次进行比较,将它插入到有序表适当的位置,形成新的有序表。 *排序特征 排序类别:插入排序 时间复杂度:O(n²) 稳定性:稳定 *适用场景 当待排序元素n比较小,元素基本有序,对稳定性有要求时,可考虑采...原创 2019-11-30 10:36:32 · 106 阅读 · 0 评论