自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 fd

2020-12-29 17:57:02 216

原创 快速排序

快速排序快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。思想从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数

2020-11-26 14:20:33 258

原创 归并排序

归并排序归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。思想把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序列合并成一个最终的排序序列。图示代码public static int[] guibing(int[] arr,in

2020-11-26 14:17:04 218

原创 希尔排序

希尔排序思想先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;按增量序列个数k,对序列进行k 趟排序;每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。图示代码function shellSort(arr) { var len = arr.length;

2020-11-26 14:13:42 233

原创 选择排序

选择排序思想在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换;第二次遍历n-2个数,找到最小的数值与第二个元素交换;。。。第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。图示代码public static void select_sort(int array[],int lenth){ for(int i=0;i<lenth-1;i++){ int minIndex = i; for(int j=i+1;j&

2020-11-26 14:10:00 238 2

原创 冒泡排序

冒泡排序思想比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。图示代码public static void BubbleSort(int [] arr){ int temp;//临时变量 for(int i=0; i<arr.length-1; i++){ //表示趟数,一共arr.le

2020-11-26 14:06:42 246

原创 插入排序

插入排序思想插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。图示代码public static void insert_sort(int array[],int lenth){ int temp; for(

2020-11-26 13:56:54 184

原创 自定义view之简单实现字母索引列表

自定义view之简单实现字母索引列表效果思路大体可分为两部分,一个是中间显示的英文字符,一个是右侧的字母索引列表,通过自定义view方法,计算每个字母的高度,然后依次绘制,通过触碰,绘制中心显示的文字,最后通过handler延时操作使其消失代码import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.

2020-09-21 16:09:01 430

原创 堆排序,我可算是明白了

堆排序从入门到精通吾学堆良久,阅百篇文章,然而未曾见一篇详尽其精髓,便属此文,以便他人学习,如有不足,还望大佬多多赐教。啥是堆?堆是一种数据结构,是一种完全二叉树啥是完全二叉树?尽量满足一个根节点有两个叶节点,(如果都满足了,就是满二叉树),如果满足不了,紧着最左边的使用,也就是说只有最后一层可以出现单节点的情况,而且是右侧不能出现单节点而左侧没有节点的情况。感觉说的不咋好,画个图来说明一下,如上图所示,圆心的数字顺序即代表着添加叶子的顺序,从上到下,从左到右,依次进行,此时,这个就是一个完全

2020-09-02 19:22:13 520

原创 leetcode:字符串相乘

leetcode:字符串相乘描述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。

2020-06-23 14:40:44 430

原创 leetcode:字符串的排列

leetcode:字符串的排列题目描述:给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例2:输入: s1= "ab" s2 = "eidboaoo"输出: False 注意:输入的字符串只包含小写字母两个字符串的长度都在 [1, 10,000] 之间方

2020-06-22 15:00:21 699

原创 插入排序及其变换

插入排序思想数组中依次遍历,从左到右(反过来也可以,只是很少有人那么干),遍历的第一个元素,假定为有序的,从第二个开始,依次和左侧的数进行比较,根据比较规则进行替换,就这样依次作比较,最终得出一个有序的数组代码:java实现public static int[] doInsertSort(int[] array) { if(array.length <= 1) return array; for (int i = 1; i < array.length; i++) { in

2020-06-19 17:33:59 187

原创 leetcode题解:最长公共前缀

leetcode题解:最长公共前缀题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。思路与代码//1,计算最短的字符串的长度 //2,挨个比较每个字符串的前minLength位

2020-06-19 13:07:41 279

原创 leetcode题解:无重复字符的最长子串

leetcode题解:无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长

2020-06-18 17:01:20 508

原创 leetcode每日一题:01两数之和

leetcode每日一题:01两数之和题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nu来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum解题思路1:两个 for循

2020-06-07 21:41:38 249

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除