20160714 数组
来源:互联网 发布:linux 添加组 编辑:程序博客网 时间:2024/06/08 17:09
class 笔记5{public static void main(String[] args) /* 数组定义:同一种类型数据的集合;好处:可以自动给数组中的元素从0编号,方便操作这些元素;格式一:元素类型 [] 数组名=new 元素类型 [元素个数或数组长度]; int [] array=new int [5];格式二:元素类型 [] 数组名=new 元素类型 [] {}; int [] array1=new int [] {1,2,3,4,5}; int [] array2={1,2,3,4};*//*{ //数组的定义int [] array=new int [5]; //格式1:System.out.println(array.length); int [] array1=new int []{1,2,3,4,5}; //格式2:System.out.println(array1.length);int [] array2={1,2,3,4};System.out.println(array2.length); double [] douArray={1,2,3,4,5,6};System.out.println(douArray.length);double [] douArray1=new double []{4,5,6};System.out.println(douArray1.length);String [] strArray=new String [10];String [] strArray1={"123","432","345"};System.out.println(strArray1.length);}*//* int [] iArray=new int [] {1,2,3,4,5}; //数组内容提取 int i= iArray[2]; System.out.println(i); String [] strArray=new String[]{"111","222"}; String s=strArray[1]; System.out.println(s);*/ /* java虚拟机内存结构划分:程序计数器(program Counter Resister),堆(Heap),栈(Stack),本地栈(Native Stack),方法区(Method Area)栈内存到堆内存:存放的是堆内存的地址 扩展!!! */ // System.out.println(strArray); //输出结果:[Ljava.lang.String;@1db9742 // int [] array3=new int[3]; //默认初始值// System.out.println(array3[0]); //输出结果:0 // int [] array4=new int[3];// System.out.println(array4[3]); //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 "输出角标越界" /* int [] array5=new int[3]; array5[0]=123; array5[1]=23; array5[2]=3; System.out.println(array5[0]); */ // int [] array6=null; //空指针异常 Exception in thread "main" java.lang.NullPointerException //System.out.println(array6[1]); /* int [] array7=null; if(array7!=null){ System.out.println(array7[1]); }else{ System.out.println("is null"); } if(array7==null){ System.out.println("is not null"); }*/{ // printArray(); //只能某一个单独执行 addValue();}/* public static void printArray(){ int[] array=new int []{1,2,3,4,5,6,7,8};for(int i=0;i<array.length;i++){if(i<5)System.out.println(array[i]);}}*/public static void addValue(){int [] array=new int [5];for(int i=0;i<array.length;i++){array[i]=2*i+1;System.out.print("*");}for(int j=0;j<array.length;j++){ System.out.print(array[j]); //复制循环执行完毕,再执行输出循环} //输出结果:*****13579}}
***************************************************************************************
<pre name="code" class="java">/** 判断数组内的最大,最小值 */class 笔记501 {public static void main(String[] args) //数组常见操作{int [] array={ 1,3,5,6,10,12,18,19}; int maxValue=getMaxValue(array); //MaxSystem.out.println(maxValue); int minValue=getMinValue(array); //MinSystem.out.println(minValue); sortAsc(array); for(int i=0;i<array.length;i++) //冒泡排序 { System.out.print(array[i]+","); } System.out.println(); System.out.println("*****************"); //分隔 sortAsc1(array); for(int i=0;i<array.length;i++) //选择排序 { System.out.print(array[i]+","); } System.out.println(); //分隔 System.out.println("***********************"); int index=binarySearch(array,0,array.length,20); //二分查找 System.out.println(index);} //列最大值public static int getMaxValue(int[]array){int tmp=-1;if(array!=null) { //判断空指针int tmpValue=array[0]; for (int i=0;i<array.length ;i++ ) //为何i=0也可输出最大值,都一样 { if(array[i]>tmpValue) //进行两个值的比较,将大的值保留下来进行下一轮的比较 tmpValue=array[i]; } tmp=tmpValue;} return tmp;} //列最小值public static int getMinValue(int [] array){int tmp=-1; if(array!=null){int tmpValue=array[0];for (int i=0;i<array.length ;i++ ) //5,8,2,6,9{if(array[i]<tmpValue) //内部循环完赋值 tmpValue=array[i];} tmp=tmpValue; }return tmp;}/*冒泡排序 从小到大的排序*/ public static void sortAsc(int[] array) {if(array!=null) { for(int i=0;i<array.length;i++){for(int j=0;j<array.length-1-i;j++){if(array[j]>array[j+1]){int tmp;tmp=array[j];array[j]=array[j+1];array[j+1]=tmp; } } } }} /* 选择排序 第一个逐渐对比到尾部 */ public static void sortAsc1(int[]array){if(array!=null){ for(int i=0;i<array.length;i++) { for(int j=i+1;j<array.length;j++) { if(array[i]>array[j]) { int tmp; tmp=array[i]; array[i]=array[j]; array[j]=tmp; } } } } } /* 递归排序 */ /* 二分查找: 只适合于排序好的数列 1,3,5,6,10,12,18,19 目标:快速找到12所在的位置 1,3,5,6 10 12,18,19 第一次查找10-1210,12,18,1912-12这个数的脚标就是所需要查找的数字 */ public static int binarySearch(int[]array,int beginIndex,int endIndex,int findValue) // 数组 0 数组长度 18 { if(array!=null) { int middleIndex=(beginIndex+endIndex)/2; //middleIndex=4; 6 int middleValue=array[middleIndex]; //middleValue=array[4]=10; array[6]=18; if(middleValue==findValue) // 18==18; { return middleIndex; // return 6;(最终结果) } else if(middleValue<findValue) //10<18 //递归,自己调用自己 { return binarySearch(array,middleIndex,endIndex,findValue); // 4 8 18 } else if(middleValue>findValue) { return binarySearch(array,beginIndex,middleIndex,findValue); } else { return -1; //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8 } // 例外;异议 通过 越 界 } else { return -1; } }}
**********************************************************************************
<pre name="code" class="java">/** 数组查找:(基本查找) 需求:查询出数组中元素是5的脚标,只返回第一个元素的脚标 结果:1.找到了 返回脚标 2.找不到 返回-1 二分查找:每次查找都是从数组的中间开始查找,数据效率提高两倍 前提条件:数组本身要保证有序的*/class 笔记502{public static void main(String[] args) {System.out.println("输出脚标:"+getIndex(9));int[][]array=new int[3][2]; //二维数组System.out.println(array); //输出内存地址System.out.println(array[0]); //输出内存地址System.out.println(array[0][0]); //默认 0 //二维数组的遍历: for (int y=0;y<array.length ;y++ ) { for(int x=0;x<array[y].length;x++) { System.out.println(array[y][x]); } } int[][]array=new int[3][]; array[0]=new int[1]; array[1]=new int[2]; array[2]=new int[3]; //如何给二维数组赋值 array int[][]array={{1,2,3},{11,22},{110}};for (int x=0;x<array ; ){}}/*public static int getIndex(int num) //数组查找 //两个输出口{//定于数组int[]array=new int[] {2,3,6,5,7,8};for (int index=0;index<array.length ;index++ ) {if(array[index]==num){return index; } }return -1; }*/ public static int getIndex(int num) //只有一个输出口{ int i=-1;//定于数组int[]array=new int[] {2,3,6,5,7,8};for (int index=0;index<array.length ;index++ ) {if(array[index]==num){ i= index; break; //没有break,有重复数字,输出最后的数字的脚标 } }return i; //退出当前循环,直接return值 } /* 二维数组 格式1:int[][]array=new int[3][2]; 格式2:int[][]array=new int[3][]; array[0]=new int[1]; array[1]=new int[2]; array[2]=new int[3]; 格式3:int[][]array={{1,2,3},{11,22},{110}}; 二维数组的遍历: */}******************************************************************************
<pre name="code" class="java">/**进制转换十进制转换成16进制*/class HexDemon{public static void main(String[] args) {/*int num=60;//3cwhile(num>0){ int tem=num & 15; if (tem>9) { //转换成A--F System.out.println((char)((tem-10)+'A')); } else { System.out.println(tem); } num=num>>>4;}*/ toHex(60); // toHex1(50);} //十进制转换为16进制 //发现一个问题:反过来输出//解决思路:使用数组存起来,最后将数组倒序输出//什么数组?字符数组//4字节 32位//0000 0000 0000 0000 0000 0000 0000 0000 public static void toHex(int num){char[]c=new char[8];//在内存中开辟一个空间储存了八个字符的数组对象int index=0;while (num>0) { int tem=num&15; if(tem>9) { //A-F c[index]=(char)((tem-10)+'A'); } else { //0-9 转换成字符0-9 c[index]=(char)(tem+'0'); } index++; num=num>>>4; } //将数组倒序打印 for (int i=index-1;i>=0;i-- ) { System.out.println(c[i]); } }/*0,1,2,3,4,5,6,7,8,9,11,12,13,14,15思路:率先定义好16进制的字符数组,位与15后*/ /* public static void toHex1(int num){char[]c=new char[8];int index=0;while (num>0) { int tem=num&15; if(tem>9) { //A-F c[index]=(char)((tem-10)+'A'); } else { //0-9 转换成字符0-9 c[index]=(char)(tem+'0'); } index++; num=num>>>4; } //将数组倒序打印 for (int i=index-1;i>=0;i-- ) { System.out.println(c[i]); } }*/}
***********************************************************************************
/**数据加密某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,然后将第一位和最后一位数字交换.请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来例:123456输出:654321 109876 609871*/class codetran {public static void main(String[] args) {tranCode(123456);}public static void tranCode(int num){ String aS = String.valueOf(num);//将基本数据型态转换成 String 的 static 方法 char[] asC = aS.toCharArray();//ToCharArray 将字符串转换为字符数组 int[]c=new int[8];int index=0; for(int i=0;i<asC.length;i++){ System.out.println(asC[i]);index++; } System.out.println("************"); for (int i=index-1;i>=0;i-- ) { System.out.print(asC[i]+" "); //System.out.print(index+" "); } System.out.println(); System.out.println("************"); //以上部分完成数据倒序 for(int i=index-1;i>=0;i--){ c[i]=(asC[i]-48+5)%10; System.out.print(c[i]+" "); } int ex; ex=c[0]; c[0]=c[index-1]; c[index-1]=ex; System.out.println(); System.out.println("************"); for(int i=index-1;i>=0;i--){ System.out.print(c[i]+" "); } }}
0 0
- 20160714 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- UVA 340-Master-Mind Hints
- Beauty of Programming 1
- Objective-C属性字符串NSAttributedString
- c#——Winform DatagridView上显示下拉树(二)
- java中double类型的数保留两位小数的输出方法并且小数点前面是0的时候如何处理
- 20160714 数组
- 图解tomcat
- Node.js模块导出exports 和 module.exports 的区别
- 2016华为暑期实习生编程题之和尚挑水
- html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
- hdu 5464(简单dp)
- HDOJ--2187 老人是真饿了(sort+结构体+贪心)
- intellij idea笔记
- UVA 644-Immediate Decodability