摘要: 思路: 利用递归的方式将数组不停的拆解,直到无法拆分为止。然后将其中的两个数组(拆解后的子数组)进行两两合并成一个有序数组,直到两个子数组合并后就是原数组则结束。 具体两个数组如何合并成一个有序数组如下: 代码: 1 /** 2 * 归并排序 3 * @param arr 需排序的数组 4 * @p 阅读全文
posted @ 2023-02-01 17:22 Java厨师长 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 思路: 将数组的第一个元素作为基准值,右索引先从右到左找到比基准值小的,左索引从左到右找到比基准值大的,然后交换,一直到左索引和右索引相遇。再将相遇的那个值与基准值交换。那么基准值左边的都是比它小的,右边的都是比它大的。 以基准值为中轴将数组一分为二,继续上面的操作将两个子数组都变成基准值左边的都比 阅读全文
posted @ 2023-02-01 15:42 Java厨师长 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 插入排序存在的问题: 数组 arr = {2,3,4,5,6,1}, 这时需要插入的数是1,那么就要逐个将其他元素往后移,再把1放在首位。当需要插入的数是较小的数时,后移的次数明显增多,对效率很有影响。 希尔排序: 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也 阅读全文
posted @ 2023-02-01 14:02 Java厨师长 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 思路: 将数组的第一个元素作为有序数组,其余的作为无序数组,从无序数组中取一个跟有序数组比较,将其放在合适的位置。那么有序数组就有两个元素,无序数组就减少一个元素。 依此类推,每一轮从无序数组里取一个放到有序数组里面排序,共arr.length - 1轮 代码: 1 /** 2 * 插入排序 3 * 阅读全文
posted @ 2023-02-01 10:20 Java厨师长 阅读(20) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示