arr

数组名和指针的区别

匿名 (未验证) 提交于 2019-12-03 00:37:01
作者:SHI家的鱼 链接:https://www.zhihu.com/question/41805285/answer/202040382 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 1. 己址 数组和指针,都是有自己的地址的 。在代码中,你可以用取地址运算符“&”来取得。程序中是: printf("%x %x\n", &pInt, &arr); 2. 己值 数组和指针,都是有自己的数据值的 。程序中,数组arr的数据值,是arr[0]的地址;而对于指针pInt,通过 pInt = arr; 之后,pInt的数据值也是arr[0]的地址。 但是,有一点不一样的是,arr的数据值是不可以改变的,是个常量;而指针变量pInt的数据值,是可以改变的 ,你可以: pInt = arr; 你也可以: pInt = arr + 1; 随你! 另外,都可以在数组和指针的己值上,做运算 ,比如: arr + 1; pInt + 1; 3. 他值 数组和指针,在获取他值时,在代码的写法上是一样的 。比如对于数组,你想获取第2个元素的值,你可以这样写: arr[1];*(arr + 1); 对于指针pInt,你也可以这样写: pInt[1]; *(pInt + 1); 也可以在数组和指针的他值上做运算,比如: arr[0] + 1; *arr + 1; *(arr

L1-027 出租(20 分)

匿名 (未验证) 提交于 2019-12-03 00:30:01
下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100。 本题要求你编写一个程序,为任何一个电话号码生成这段代码 ―― 事实上,只要生成最前面两行就可以了,后面内容是不变的。 输入格式: 输入在一行中给出一个由11位数字组成的手机号码。 输出格式: 为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。 输入样例: 18013820100 输出样例: int[] arr = new int[]{8,3,2,1,0}; int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4}; #include<stdio.h> int index[11]; char array_t1[11]; int array_t2[10]; int phone[11]; int array[10]; int main() { scanf("%s",array_t1); for(int i=0;i<11;i++) { int t=(int)array_t1[i]-48; array_t2[t]++

JS基础 - 数组 - 常用方法 - unshift() 方法、shift方法

匿名 (未验证) 提交于 2019-12-03 00:30:01
unshift 方法: 代码: var arr = ["张三", "李四", "王五"]; var count = arr.unshift("赵六", "小明"); console.log(count); console.log(arr); 输出: shift 方法: 代码: var arr = ["张三", "李四", "王五"]; var item = arr.shift(); console.log(item); console.log(arr); 输出: 文章来源: JS基础 - 数组 - 常用方法 - unshift() 方法、shift方法

【C语言】指针的算术运算

匿名 (未验证) 提交于 2019-12-03 00:30:01
之前在学习指针时,我们知道指针其实也是一种变量,既然这样,那么指针应该和普通变量一样,可以进行算术运算。下面我们介绍指针的加减运算。 先看一个实例: #include <stdio.h> int main() { int arr[10] = {1,2,3,4}; int *p = arr; *p = 10; printf("%d\n",*p); p++; *p = 20; printf("%d\n",*p); return 0; } 假设其首地址为1000, 则整个数组对应的地址如下: 图1 数组arr对应地址 图2 修改数组arr首元素的内容 图3 指针p向后移一个数组 十进制的2转化为十六进制为0x00000002。因电脑使用的小端,即低地址存放小数据,如下图所示: 图4 前两个数组元素 图5 指针p加一个字节 arr[1] 修改为20,如图: 指针p加一个单元格 #include <stdio.h> int main() { int *p = (int *)1000; printf("%d\n",p+5);//1020 printf("%d\n",(short *) p+5);//1010 printf("%d\n",(unsigned long *)p+5);//1020 printf("%d\n",(double *)p+5);//1040 printf("%d\n",

算法------编程主机(ProgrammingPeals)第一章习题

匿名 (未验证) 提交于 2019-12-03 00:29:01
package code_01_chapter ; import java . util . Random ; import java . util . Scanner ; /* *Created by William on 2018/6/14 0014 */ public class QuestionsInChapter1 { /** * Q1: * 如果不缺内存,如何使用一个具有库的语言来实现一种排序算法以表示和排序集合? * Array.sort(); */ /** * Q2: * 如何使用位逻辑(例如与、或、移位)来实现位向量? * 给定一个整型(32位)数组,我们输入一个参数i,然后设置数组的i位是1,或是对第i位清零,或是探测第i位的值。 */ static class Q2 { final static int N = 10000000 ; //最多一千万个不重复数据 final static int BITSTEPWORD = 32 ; //int类型32位 static int [] arr = new int [ 1 + N / BITSTEPWORD ]; //使用int[]数组来表示1千万位 final static int SHIFT = 5 ; //右移5位 final static int MARK = 0x1F ; //掩码11111

动态规划-最长子序列

匿名 (未验证) 提交于 2019-12-03 00:27:02
递归式: c[i-1][j] 还是 c[i][j-1] 。 代码: int Lcs( string &s1, string &s2, int i, int j, int ** &arr) { if (arr == nullptr ) { arr = new int *[s1.length()+ 1 ]; for ( int i = 0 ; i <= s1.length(); i++) { arr[i] = new int [s2.length()+ 1 ]; } for ( int i = 0 ; i <= s1.length(); i++) { arr[i][ 0 ] = 0 ; for ( int j = 0 ; j <= s2.length(); j++) { arr[ 0 ][j] = 0 ; if (i >= 1 && j >= 1 ) { arr[i][j] = - 1 ; } } } } if (i == 0 || j == 0 ) { arr[i][j] = 0 ; return arr[i][j]; } if (arr[i][j] != - 1 ) { return arr[i][j]; } if (s1[i- 1 ] == s2[j- 1 ]){ arr[i][j]= Lcs(s1, s2, i - 1 , j - 1 ,arr) + 1 ; } else {

【数据结构】常见排序算法

匿名 (未验证) 提交于 2019-12-03 00:25:02
GitHub源码 理论 let arr =[ 15 , 9 , 8 , 1 , 4 , 11 , 7 , 12 , 13 , 6 , 5 , 3 , 16 , 2 , 10 , 14 ]; console . log ( arr ); insort ( arr ); console . log ( arr ); function insort ( arr ) { for ( let i = 1 ; i < arr . length ; i ++){ //从第二个元素开始依次处理 let temp = arr [ i ]; //待插入值 let j = i - 1 ; //从其前一个位置开始依次比较 while ( j >= 0 && arr [ j ]> temp ){ //若比待插入值大,依次向后移 arr [ j + 1 ]= arr [ j ]; j --; } arr [ j + 1 ]= temp ; //将待插入值插入正确位置 } return arr ; } let arr =[ 15 , 9 , 8 , 1 , 4 , 11 , 7 , 12 , 13 , 6 , 5 , 3 , 16 , 2 , 10 , 14 ]; console . log ( arr ); halfinsort ( arr ); console . log ( arr ); function

算法与数据结构(11)―― 堆排序(原地排序)

匿名 (未验证) 提交于 2019-12-03 00:22:01
原地排序: 之前两种的都是从索引1开始计算的,而原地排序不需要额外的辅助空间,即不用去创造堆,那么索引从0开始的~ 注意一下 最后一个非叶子结点的索引是(count - 2)/ 2 public class HeapSort { private HeapSort() { } public static void sort(Comparable[] arr){ int n = arr.length; // 注意,此时我们的堆是从0开始索引的 // 从(最后一个元素的索引-1)/2开始 // 最后一个元素的索引 = n-1 for( int i = (n-1-1)/2 ; i >= 0 ; i -- ) shiftDown2(arr, n, i); // ---- 此时已经形成一个堆了 ---- for( int i = n-1; i > 0 ; i-- ){ swap( arr, 0, i); shiftDown2(arr, i, 0); } } // 交换堆中索引为i和j的两个元素 private static void swap(Object[] arr, int i, int j){ Object t = arr[i]; arr[i] = arr[j]; arr[j] = t; } // 原始的shiftDown过程 private static void shiftDown

依图科技面试

匿名 (未验证) 提交于 2019-12-03 00:22:01
依图科技是我第一个走完所有流程的公司,虽然不知道offer最终会发下来与否。但是终于有公司让我走完了流程,对我有一点肯定。感谢依图科技! 最近几天有空。记录一下自己觉得有趣的吧。 一面时电话面试,上来就是自我介绍。 比较队列和栈 用两个栈实现队列的入队出队操作 给定一个数组,里面有若干个1和若干个2,现在需要将所有的1放到数组左边,所有的2放到数组右边,时间复杂度O(n),空间复杂度O(1)。请实现这个排序算法。 这个问题我用到了快排 说到快排 我之前用的是一个错误的快排。我知道它的思想但是实现的方式增加了空间复杂度而且不停地重新分配数组。这是对性能很大的损耗。也就是网上抨击阮一峰老师的那个快排了,说起阮一峰老师,说真的很感谢他。看了一些他的博客收获很大,虽然他这个快排有错误。但是我觉得思想是在那里正确的,指出错误就行,非得抨击? 二面中又问到了快排 function quickSort (arr) { if (arr.length === 1 ) { return arr; } let change = function (arr, i, j) { let temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } let partition = function (arr, left, right) { let temp = arr

Android开发之ApiCloud模块开发值模块引用第三方库的问题

匿名 (未验证) 提交于 2019-12-03 00:22:01
因为现在第三方库比较多,所以很多人为了快速开发导致库用烂大街了,但是在模块开发中本人不建议使用第三方库的依赖会有很多问题,要么是资源图片找不到,要么是布局找不到啥的,但是有的需求只有第三方库怎么办呢? 不怕,我写这个博客就是用来解决这个问题的。 例如下图我想开发出一个日期和城市选择器,我为了省事,利用的第三方库,pickerView直接引用的。 在模块库中是这样引用的 compile ' com.contrarywind:Android-PickerView:4.1.3 ' 很明显没有任何问题,但是当你打包成arr上传到自定义模块问题就出现了,找不到相应的资源了……原因是啥呢?那是因为你打包arr的包里面缺少相应的资源文件,所以出错了云编译后跑不起来。 那我们怎么办呢? GitHub打开找到源码下载下来,然后将所以源码资源图片复制到相应文件夹,然后用你的项目依赖此源码库(前提是你的源码你要征程一个内库,不用我说方法了吧?不会的话请留言),这样的话你打包的arr就不会出现各种资源找不到了,如下图: 然后在你的模块库中新建相应的调起方法:如下图 运行项目后或自动生成ARR包里面包含pickerView的所有资源源码的arr包,然后制作模块上传就行,后续步骤请看我上一篇博客 Android开发之ApiCloud模块开发步骤 文章来源: