一、数组
数组的创建
int array[ ] = new int [ 3 ] ;
为数组中的元素进行赋值
array[ 0 ] = 1 ;
array[ 1 ] = 2 ;
array[ 2 ] = 3 ;
创建时为数组进行赋值
int array[ ] = new int [ ] { 1 , 2 , 3 } ;
输出数组中的所有元素
System. out. println ( Arrays. toString ( 目标数组) ) ;
在数组后面添加新的元素
public class OpArrayTest {
public static void main ( String[ ] args) {
int array[ ] = new int [ ] { 1 , 2 , 3 } ;
System. out. println ( Arrays. toString ( array) ) ;
int dext = 4 ;
int array1[ ] = new int [ array. length+ 1 ] ;
for ( int i= 0 ; i< array. length; i++ ) {
array1[ i] = array[ i] ;
}
array1[ array. length] = dext;
array= array1;
System. out. println ( Arrays. toString ( array) ) ;
}
删除数组中的元素
package shuzu;
import java. util. Arrays;
public class OpArrayTest2 {
public static void main ( String[ ] args) {
int array[ ] = new int [ ] { 1 , 2 , 3 , 4 , 5 } ;
System. out. println ( Arrays. toString ( array) ) ;
int dext = 2 ;
int array1[ ] = new int [ array. length- 1 ] ;
for ( int i= 0 ; i< array1. length; i++ ) {
if ( i< dext) {
array1[ i] = array[ i] ;
} else {
array1[ i] = array[ i+ 1 ] ;
}
}
array = array1;
System. out. println ( Arrays. toString ( array) ) ;
}
}
二、面向对象数组
创建工具类MyArray.java,封装操作数组的一些方法。
package shuzu. util;
import java. util. Arrays;
public class MyArray {
private int array[ ] ;
public MyArray ( ) {
array = new int [ 0 ] ;
}
public int size ( ) {
return array. length;
}
public void show ( ) {
System. out. println ( Arrays. toString ( array) ) ;
}
public void add ( int dex) {
int array1[ ] = new int [ array. length+ 1 ] ;
for ( int i= 0 ; i< array. length; i++ ) {
array1[ i] = array[ i] ;
}
array1[ array. length] = dex;
array = array1;
}
public void delete ( int dex) {
int array1[ ] = new int [ array. length- 1 ] ;
if ( dex< 0 || dex> array. length- 1 ) {
throw new RuntimeException ( "下标越界" ) ;
}
for ( int i= 0 ; i< array1. length; i++ ) {
if ( i< dex) {
array1[ i] = array[ i] ;
} else {
array1[ i] = array[ i+ 1 ] ;
}
}
array = array1;
}
public void insert ( int dex, int nex) {
int array1[ ] = new int [ array. length+ 1 ] ;
if ( dex< 0 || dex> array. length- 1 ) {
throw new RuntimeException ( "下标越界" ) ;
}
for ( int i= 0 ; i< array. length; i++ ) {
if ( i< dex) {
array1[ i] = array[ i] ;
} else {
array1[ i+ 1 ] = array[ i] ;
}
}
array1[ dex] = nex;
array = array1;
}
public void set ( int dex , int nex) {
array[ dex] = nex;
}
}
编写一个测试类来创建一个可变数组,并对数组进行添加,删除,替换,输出等操作。
package shuzu;
import shuzu. util. MyArray;
public class MyArrayTest {
public static void main ( String[ ] args) {
MyArray ma = new MyArray ( ) ;
ma. show ( ) ;
ma. add ( 1 ) ;
ma. add ( 66 ) ;
ma. show ( ) ;
ma. add ( 2 ) ;
ma. show ( ) ;
ma. add ( 3 ) ;
ma. add ( 4 ) ;
ma. add ( 5 ) ;
ma. show ( ) ;
ma. delete ( 2 ) ;
ma. show ( ) ;
ma. insert ( 2 , 8 ) ;
ma. show ( ) ;
ma. set ( 2 , 11 ) ;
ma. show ( ) ;
}
}
控制台效果如图:
三、线性查找
创建目标数组,将目标元素和数组中的每一个元素作比较,如果相等就返回该元素的下标
package shuzu;
public class SearchTest {
public static void main ( String[ ] ages) {
int array[ ] = new int [ ] { 1 , 3 , 2 , 9 , 6 , 8 } ;
int dex = 8 ;
int nex = - 1 ;
for ( int i= 0 ; i< array. length; i++ ) {
if ( array[ i] == dex) {
nex = i;
break ;
}
}
System. out. println ( "目标元素的下标:" + nex) ;
}
}
四、二分查找
创建一个有序数组并为其赋值,记录开始,中间,结束的位置。循环每次会那中间元素和目标元素作比较,如果中间元素比目标元素大,就把结束位置变为中间元素的前一个元素的位置。如果中间元素比目标元素小,就把开始位置变为中甲元素的后一个元素的位置。
package shuzu;
import java. util. Arrays;
public class BinaryTest {
public static void main ( String[ ] ages) {
int array[ ] = new int [ ] { 1 , 3 , 2 , 4 , 5 , 6 , 7 , 8 , 9 } ;
Arrays. sort ( array) ;
System. out. println ( Arrays. toString ( array) ) ;
int nex = 7 ;
int begin = 0 ;
int end = array. length- 1 ;
int mid = ( begin+ end) / 2 ;
int dex = - 1 ;
while ( true ) {
if ( array[ mid] == nex) {
dex = mid;
break ;
} else {
if ( array[ mid] > nex) {
end = mid- 1 ;
} else {
begin = mid+ 1 ;
}
}
mid = ( begin+ end) / 2 ;
}
System. out. println ( "查找到目标元素的位置" + dex) ;
}
}