刷题
哭着跑开了
这个作者很懒,什么都没留下…
展开
-
【排序算法】经典排序算法总结+Java实现
一、交换排序 冒泡排序 平均时间复杂度:O(n2) 空间复杂度:O(1) 稳定性:稳定 原理:两层for循环,比较相邻两个元素大小,后者小于前者,交换位置,一次循环后,最大的数在最后一位 /** * 一、冒泡排序(一种比较排序) * 原理:两层for循环,比较相邻两个元素大小,后者小于前者,交换位置,一次循环后,最大的数在最后一位 * 时间复杂度:O(n^2) 空间复杂度:O(1) * 内排序(In-place):所有操作在内存中完成 * 稳定原创 2020-06-03 12:06:57 · 260 阅读 · 0 评论 -
Java 数组循环右移k位
【思路一】最基本解法:内层循环,循环右移1位,外层循环执行K次。由于前一位覆盖后一位,所以内存循环从后向前移动 【思路二】 翻转方法,三次翻转。[1,2,3,4,5],k=2 第一次倒置整个数组:[5,4,3,2,1] 第二次对左边k个元素倒置:[4,5,3,2,1] 第三次对右边length-k个元素倒置:[4,5,1,2,3] import java.util.Arrays; /** * 数组循环右移K位 */ public class movek { //最基本解法:内层循环,循环右.原创 2020-05-21 17:42:31 · 686 阅读 · 0 评论 -
Java实现快速排序
【思路】快排的关键是每次排序找到一个支点,然后快排一次的结果是:支点左侧值全部小于支点值,支点右侧值全部大于支点值。代码的思路是:每次排序将arr[low]作为支点值pivotkey,支点不动,分别头尾设置指针i、j,arr[j]>=pivotkey,j支点左移,不满足的时找到小于pivotkey的值(不满足条件的值arr[j]);arr[i]<=pivotkey,i支点右移,不满足的时候,找到大于pivotkey的值(不满足的值arr[i]);交换arr[i]和arr[j],继续移动指针,直.原创 2020-05-21 16:15:30 · 111 阅读 · 0 评论 -
【leetcode hot 100】#4 寻找两个正序数组的中位数
#4 寻找两个正序数组的中位数 分类:数组 难度:困难 寻找两个正序数组的中位数 【思路】设置两个指针遍历两个数组(不要忘了特殊情况的判断!!!) /** * leetcode hot100 https://leetcode-cn.com/problemset/hot-100/ * #4 寻找两个正序数组的中位数 困难 * 20200507 * * 题目描述: * 给定两个大小为 ...原创 2020-05-08 16:56:32 · 298 阅读 · 1 评论