- 博客(15)
- 收藏
- 关注
原创 2021-07-23大家直接看图
<view class="outline anticlockwise up-down-move"> <view class="ticket-type"> 5元优惠券 </view></view>.ticket-type{ height: 60rpx; width: 300rpx; position: relative; top: 70rpx; color: white; left: 10rpx; font-size: 4..
2021-07-23 16:32:37
98
原创 回文判断-2
使用递归的方式对字符串进行回文判断:public static boolean myPalindromic(String str){ if (str == null || str.length() == 0){ return false; } return isPalindromicStr_v2(str,0,str.length()-1);}public static boolean isPalindromicStr_v2(String
2020-10-19 18:13:47
120
原创 回文判断-1
"回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数如果是一个int类型的数可以这样判断:public static boolean isPalindromicInt(int number){ ArrayList list = new ArrayList(); while (number != 0){ list.add(number%10); number =
2020-10-19 17:32:53
219
原创 二分查找-2
v1中使用while循环的方式,我们也可以不使用循环,使用递归的方式来实现public static int binarySearch_v2(int[] array,int value){ int start = 0; int end = array.length - 1; return mySearch(array,start,end,value); }public static int mySearch(int[] array, int st
2020-10-19 10:47:34
91
1
原创 二分查找-1
二分法查找适用于大的数据,前提条件数据必须是有序的,他的原理是先和中间的比较,如果等于就直接返回,如果小于就在前半部分继续使用二分法进行查找,如果大于则在后半部分继续使用二分法进行查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。public static int binarySearch_v1(int[] array,int value){ int start = 0; int end = array.length - 1;
2020-10-19 10:30:53
75
原创 元素唯一性-算法优化
我们给出一个有n个元素的序列array,求该集合中的所有元素受否有相同。public static boolean checkElement_v1(int[] array){ for (int i = 0; i < array.length; i++) { for (int j = i+1; j < array.length; j++) { if (array[i] == array[j]){
2020-10-17 15:49:10
2316
原创 分析中重要的函数
1.常数函数: f(n) = cn的值不重要,f(n)总是为定值c,它描述了在计算机上基本操作的部属,例如两个数相加,给一些变量赋值。2.对数函数: f(n) = y=log(b)N因为计算机存储整数采用二进制,并且很多算法中的常见操作是把一个输入分成两半。3.线性函数: f(n) = n这个函数出现在我们必须对所有n个元素做基本操作的算法分析的任何时间。4. n log n函数: f(n) = n log n对于一个输入值n,这个函数是n倍的以2为底的n的对数,这个函数的增长速度比线性函数快
2020-10-17 14:45:24
160
原创 数据结构-数组
定义一个长度为5的数组,但是数组的大小一旦确定就不可以再改变了:int[] arr = new int[5];也可以直接对他进行初始化:int[] arr = new int[]{1,3,6};源码分析传说中的动态数组ArrayList(),所有数据都会存入它的这个数组中:transient Object[] elementData;默认初始容量为10:private static final int DEFAULT_CAPACITY = 10;ArrayLsit几个常见的方法,第一
2020-10-16 17:40:26
190
2
原创 顺序查找
查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,也不需要排序,只需要一个个对比即可,但是其效率很低。public static boolean shunSearch(int[] array,int key){ if (array.length < 0 || array == null){ return false; } for (int i = 0; i < array.length; i++) {
2020-10-16 16:10:50
175
原创 三集不相交问题
算法分析:我们给出三个无重复元素的序列A,B,C,长度都为n,但是在不同序列中的元素可以重复,三集不相交问题就是确定三个序列的交集是否为空,即是否存在元素x满足x∈A,x∈B,同时x属于Cpublic static boolean noIntersect_v1(int[] arrA,int[] arrB,int[] arrC){ for (int i = 0; i < arrA.length; i++) { //1 for (int j = 0; j &l
2020-10-15 20:59:48
487
原创 前缀平均值
定义:计算数组X里的前缀平均值,表明从数组第一个数开始求和,前n个的和就除以n,依次计算到数组所有元素的和除以总数结束,所得的n个结果就是所有要求的平均值,然后放入一个新的数组。我们想计算出数组A,该数组满足的条件为:当j=0,…,n-1时,A[ j ]是X[ 0 ],…,X[ j ]的平均值。public static void main(String []args) { double[] arr = {4,6,10,8,2}; double[] result = qianZhui(arr.
2020-10-15 18:16:44
485
原创 插入排序
插入排序的原理:1.从第一个元素开始,该元素可以认为已经被排序2.取出下一个元素,在已经排序的元素序列中从后向前扫描比较3.如果已排序的该元素大于新元素,将该元素移到向后一个位置4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置5.将新元素插入到该元素位置后6.重复步骤2~5public static int[] insertionSort(int[] array){ int current = 0; for(int i = 0; i < array.len
2020-10-14 15:43:11
61
原创 选择排序
选择排序原理:在每一次遍历中,假设第一个下标值的元素为最小值,与后面的元素进行比较,找到小的值将下标值标记下来,找到最小值进行交换,存放在序列的起始位置,依此类推,直到将所有元素排序完毕。外层循环:控制将有多少次选择排序,保证序列的每个值都能够比较到内层循环:进行比较,找到最小值的下标值public static int[] selectionSort(int[] array) { //n= 0到array-1,再+1 for (int i = 0; i < array.le
2020-10-12 15:36:59
72
原创 喝汽水
算法 1.一元钱一瓶汽水????,喝完后两个空瓶子换一瓶汽水,问:你有20元钱,最多可以喝到几瓶,写出算法过程。但是不计算最后借的,可以喝39瓶public static void main(String[] args) { int result = sellBottles(20); System.out.println("结果为:"+result);}public static int sellBottles(int startMoney){ int sum = sta
2020-09-17 22:09:37
232
原创 冒泡排序
冒泡原理:比较两个相邻元素,将值大的换交换到右边。外层循环:控制将最大值交换到右侧的轮数内层循环:控制每一轮外层循环下,相邻元素的比较步骤 /** * 冒泡排序 * @param array * @return */ public static int[] bubbleSort(int[] array){ int t = 0; //算法执行所需要的临时空间O(n) // n = array.length for (int i = 0; i
2019-10-16 18:54:24
167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人