黑马程序员-----Java基础-----数组!
来源:互联网 发布:健步走计步器软件 编辑:程序博客网 时间:2024/05/21 06:59
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组。
二,堆栈内存的解释:
数组操作中,在栈内存中保存的永远是数组的名称,只开辟了栈内的空间,数组是永远无法使用的,必须有指向的对内存才可以使用,要想开辟新对内存空间必须使用new关键字,之后就是将对内存的使用权交给对应的栈内存,而且一个堆内存空间可以同时被多个栈内存空间指向,比如一个人可以有多个名字,人就相当于对内存,名字就相当于栈内存。
三,取得数组的长度:
在java中取得数组的长度(也就是数组元素的长度)可以利用数组名称.length完成,数组名称.length--返回一个int类型的数据。
四,二维数组:
如果可以把一维数组当做几何中的一条线图形,那么二维数组就相当于一个表格。
五,练习
选择排序练习
public class Test{
public static void main(String args []){
int [] arr = {2,3,1,8,4,9,7,4,6};
Print(arr);//调用打印函数
selecSort(arr);//调用排序
Print(arr);//调用排序后打印
}
public static void selecSort(int[] arr){
for(int i = 0 ; i < arr.length ; i++){
for(int j = i+1 ; j < arr.length ; j++){
if(arr[i] > arr[j] ){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
public static void Print(int [] arr){
System.out.print("[");
for(int x = 0 ; x < arr.length ; x++){
if(x!=arr.length-1){
System.out.print(arr[x]+",");
}
else
System.out.print(arr[x]);
}
System.out.println("]");
System.out.println();
}
}
冒泡排序练习
public class Test{
public static void main(String args []){
int [] arr = {2,3,1,8,6,4,6,9,7,5};
Print(arr);
selecSort(arr);
Print(arr);
}
public static void selecSort(int[] arr){
for(int i = 0 ; i < arr.length-1 ; i++){
for(int j = 0 ; j < arr.length-i-1 ; j++){
if(arr[j] > arr[j+1] ){ //开始冒泡排序
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
public static void Print(int [] arr){
System.out.print("[");
for(int x = 0 ; x < arr.length ; x++){
if(x!=arr.length-1){
System.out.print(arr[x]+",");
}
else
System.out.print(arr[x]);
}
System.out.println("]");
System.out.println();
}
}
数组中取大小值
public class Test{
public static void main(String[] args) {
int [] arr = {3,5,6,7,3,2,8,9};
int max = getMax(arr);
System.out.println("max="+max);
}
public static int getMax(int [] arr){
int max = arr[0];
for(int x =1 ; x < arr.length ;x++){
if(max < arr[x])
max = arr[x]; //取最大值
}
return max;
}
}
public class Test {
public static int getMin(int[] arr){
int min = arr[0];
for(int x = 1; x < arr.length ; x++){
if( min>arr[x]){
min = arr[x]; //取最小值
}
}
return max;
}
public static void main(String args []){
int arr[] = {3,5,6,8,6,3,1,5,9};
int x = getMin(arr);
System.out.print("min="+x);
}
}
折中法 找中间值。
效率高 但是必须保证该数组是有序的数组。
public static void main(String args []){
int [] arr ={1,2,3,4,5,6,7,8,9,22,33,44,55,66,77};
//int x = halfserch(arr,11);
int index = half(arr,1);
System.out.println("key="+index);
}
第一种方式、
public static int halfserch(int [] arr, int key){
int max , min, mid;
max = arr.length-1;
min = 0;
mid = (max + min)/2;
while(arr[mid]!= key ){
if(key > arr[mid])
min=mid + 1;
else if (key < arr[mid])
max = mid - 1;
if (min > max)
return -1;
mid = (max + min)/2;
}
return mid;
}
第二种方式、
public static int half(int [] arr,int key){
int min= 0,max = arr.length, mid;
while(min<= max){
mid = (max + min)/2;
if (key > arr[mid])
min = mid + 1;
else if (key <arr [mid])
max = mid - 1;
else
return mid;
}
return -1;
}
}
进制转换方法
优化成函数 调用即可
public static void trans(int num ,int base , int offset){//base (几进制与&上几),offset偏移量
char[] chs = {'0','1','2','3'
,'4','5','6','7'
,'8','9','A','B'
,'C','D','E','F'};
char[] arr = new char[32];
int pos = arr.length;
while(num != 0){
int temp = num & base;
arr[--pos] = chs [temp];
num = num >>> offset;
}
for (int x = pos ;x < arr.length ; x++){
System.out.print(arr[x]);
}
}
public static void tobin(int num){//十进制——————二进制
trans(num,1,1);
}
public static void tobi(int num){//十进制——————八进制
trans(num,7,3);
}
public static void tob(int num){//十进制——————六进制
trans(num,15,4);
}
}
数组真是看了好几天了,以前有学过类似的,不过都忘得差不多了,这次又加深了记忆与理解,老师讲的也很好。
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
0 0
- 黑马程序员-->Java基础-->数组
- 黑马程序员---java基础----数组
- 黑马程序员-Java基础-数组
- 黑马程序员-----Java基础-----数组!
- 黑马程序员---java基础--数组
- 黑马程序员---Java基础---数组
- 黑马程序员---Java基础--04天(数组)
- 黑马程序员-java基础 循环和数组
- 黑马程序员 Java基础(函数,数组)
- 黑马程序员JAVA基础-数组的操作
- 黑马程序员---JAVA基础---数组(四)
- 黑马程序员--Java基础--02数组
- 黑马程序员--- java基础学习之数组
- 黑马程序员--Java基础--02数组
- 黑马程序员—Java语言基础(数组)
- 黑马程序员-day04-Java基础语法(数组)
- 黑马程序员 Java基础<五> 数组
- 黑马程序员 java基础之数组
- hdoj 2874 Connections between cities 【并查集合并森林成一棵树 + LCA转RMQ】
- Intellij IDEA创建Maven Web项目以及ubuntu maven环境安装配置
- UVA 10441Catenyms【欧拉路】
- leetcode--Wildcard Matching
- JAVA学习笔记(五)
- 黑马程序员-----Java基础-----数组!
- 每天学点java—Object类
- 这是结束,还是开始。
- CodeForces 492B
- OS-8
- 机器学习之logistic回归与分类
- iPad的开发Model与文件管理
- iOS 8 地图授权
- GNU Binary Utilities的笔记