黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例
来源:互联网 发布:淘宝网店推广方案 编辑:程序博客网 时间:2024/04/30 09:19
------- android培训、ios培训、期待与您交流! ----------
一、main函数args详解
public class TestArray{public static void main(String args[]){int y=new Integer("3"); //这里如果 用 int[] y = new Integer(args.length); ,会提示不兼容的类型,原因是将integer 构造方法的值直接赋值给数组,而Integer没有返回类型为数组的构造方法,所以需要格外注意,追根到底还是定义数组的格式问题int a[]=new int[args.length];for(int i=0;i<args.length;i++){a[i]=Integer.parseInt(args[i]);}print(a);System.out.println(y);selectSort(a);print(a);}static void print(int[] a){for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}System.out.println();}static void selectSort(int[] a){for(int i=0;i<a.length;i++){for(int j=i+1;j<a.length;j++){if(a[j]<a[i]){int z=a[j];a[j]=a[i];a[i]=z;}}}}}以上版本还存在优化的空间,以下是优化过得程序//优化版本public class TestArrayOptimize{public static void main(String args[]){int y=new Integer("3");int a[]=new int[args.length];for(int i=0;i<args.length;i++){a[i]=Integer.parseInt(args[i]);}print(a);System.out.println(y);selectSort(a);print(a);}static void print(int[] a){for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}System.out.println();}private static void selectSort(int[] a){ //这里可以将这个方法限定为内部访问int k,temp; //1for(int i=0;i<a.length;i++){k=i;for(int j=k+1;j<a.length;j++){ //2if(a[j]<a[k]){k=j;}}if(a[i]!=a[k]){ //这里还需要有点注意的地方,就是比较 i与k的值比较,还是比较其下标的数组值,都可以,即 可以写成 if(i!=k)这样比较也可以,而且更好temp=a[k];a[k]=a[i];a[i]=temp;}}}以上这个版本主要做了两点优化
1、只在栈内存分配一次变量2、排序时,从找到的更小的数往后继续比较大小,直到找到最小的数,然后与前面的数对调位置,完成内部循环,依次类推完成外部寻循环,直到完成比较。
二、折半查找法
public class BinarySearch{
public static void main(String[] args){
//int[] arr=new int[1,2,3,4,5,8,12,14,15,17,20,24];int[] arr={1,2,3,4,5,8,12,14,15,17,20,24};System.out.println(searchNum(arr,12));System.out.println(binarySearch(arr,24));//输出结果为 -1 —————— ①System.out.println(binarySearch(arr,1));//输出结果为0
}//static void searchNum(int[] a,int num){public static int searchNum(int[] a,int num){for(int i=0;i<a.length;i++){if(a[i]==num){return i;}}return -1;}public static int binarySearch(int[] a,int num){if(a.length==0) return -1;int startPos=0;int endPos=a.length-1;//一开始这里忘记减去1,结果返回值为就返回-1。int index=(endPos+startPos)/2;// for(int i=startPos;i<endPos;i++){// if(a[i]==num){// return i;// }// if(a[i]>num){// startPos=index+1;// }// if(a[i]<num){// endPos=index-1;// }// } ————————————①while(startPos<endPos){ //这里如果少了一个=号,—————— ②if(a[index]==num){return index;}if(a[index]<num){startPos=index+1;}if(a[index]>num){endPos=index-1;}index=(startPos+endPos)/2;———————————————③}return -1;}
}
总结:
①一开始使用for循环想完成这个实例,但是失败了,需要思考原因,进一步查找资料
②使用while循环控制时,起始位置与结束位置应该可以相等,不然如果查找的数是最后一个数,会查找不到,返回-1;
③使用while循环时,需要记得加上这条语句,不然就会陷入死循环,无限循环下去
0 0
- 黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例
- 黑马程序员_Java基础_数组_04
- 黑马程序员_Java基础_04数组
- 黑马程序员_java数组排序、查找、置换
- 黑马程序员_Java基础_函数,数组,常用排序
- 黑马程序员_java基础_函数&数组
- 黑马程序员_JAVA基础-函数与数组
- 黑马程序员_04函数与数组
- 黑马程序员_Java基础[10]_主函数main、数组、static、静态代码块、帮助文档
- 黑马程序员 java基础 函数 数组 查找与排序总结
- 黑马程序员_java基础--数组
- 黑马程序员_java基础 主函数main
- 黑马程序员_Java基础(流程控制、函数、数组)
- 黑马程序员_java编程基础第3天函数 数组
- 黑马程序员_java语法基础【3】(函数、数组)
- 黑马程序员_Java基础语法之函数与数组
- 黑马程序员_java编程基础04数组
- 黑马程序员_Java基础_数组
- Zed Shaw:程序员的常见健康问题
- Project facet Java version 1.7 is not supported.
- Linux 2.6 kernel 中的makefile 中文翻译
- 2014年9月11日我的csdn博客诞生-随遇而安
- Objective-C的内省(Introspection)小结
- 黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例
- GridView内容居中信息方法
- iOS 图像资源Images Assets
- Android 事件分发
- oracle 闪回版本查询和闪回事务查询
- 服务器进程为何通常fork()两次
- Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
- TransactionProxyFactoryBean代理事务
- Mac OS X中MacPorts安装和使用