明确概念:
既然说到了数组,首先,我们先明确一下数组的概念:相同数据类型的元素按一定顺序排列的集合。
Java中,数组元素可以为简单数据类型,也可以为对象。
那么,既然是相同数据类型的元素的排列,那么他们在内存中的存放也是按照这个先后顺序的。
定义方式:
java中数组一般是要先声明,后创建空间,然后再创建数组元素并赋值。
其定义的方式有四种:
数据类型[ ] 数组名; //声明一维数组
数组名=new 数据类型[个数];//动态分配内存给数组
数据类型[ ] 数组名= new 数据类型[个数];
数据类型[ ] 数组名= new 数据类型[个数]{"赋初值"};
数据类型[ ] 数组名; //声明一维数组
数组名=new 数据类型[个数]{"赋初值"};//动态分配内存给数组
数组的方法:
数组里面只有一个唯一的方法,就是length
两个练习:
1.一维数组的各种排序方法
package 数组;
import java.util.Random;
public class Kindsort {
/**
* 各种排序方法
*/
public static void main(String[] args) {
Kindsort sort = new Kindsort();
//在这里使用下面的方法即可
sort.quick();
System.out.println("===========================================");
sort.shellsort();
System.out.println("===========================================");
sort.insort();
System.out.println("===========================================");
sort.selectsort();
}
//人工快速排序
private void quick() {
int[] array = new int[5];
for(int i=0;i<5;i++){
Random rand = new Random();
array[i]=rand.nextInt(500);
}
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
int temp =array[i];
if(temp <= array[j]){
array[i] = array[j];
array[j] = temp;
}else{
continue;
}
}
}
for(int i=0;i<5;i++){
System.out.println(array[i]);
}
}
//希尔排序
private void shellsort() {
int[] array = new int[5];
for(int i=0;i<5;i++){
Random rand = new Random();
array[i]=rand.nextInt(500);
}
for (int in = array.length / 2; in > 0; in /= 2) {
for (int i = in; i < array.length; i++) {
int t = array[i];
int j = 0;
for (j = i; j >= in; j = j - in) {
if (t < array[j - in]) {
array[j] = array[j - in];
} else {
break;
}
}
array[j] = t;
}
}
for (int i = 0; i < array.length; i++)
System.out.println(array[i] + "\t");
}
//插入排序
private void insort() {
int[] array = new int[5];
for(int i=0;i<5;i++){
Random rand = new Random();
array[i]=rand.nextInt(500);
}
for (int i = 1; i < array.length; i++) {
for (int j = i; j > 0; j--) {
if (array[j] < array[j - 1]) {
int t = array[j];
array[j] = array[j - 1];
array[j - 1] = t;
}
}
}
for (int i = 0; i < array.length; i++)
System.out.println(array[i] + "\t");
}
//选择排序
private void selectsort() {
int[] array = new int[5];
for(int i=0;i<5;i++){
Random rand = new Random();
array[i]=rand.nextInt(500);
}
for (int i = 0; i < array.length; i++) {
int min = i;
for (int j = i + 1; j < array.length; j++) {
if (array[min] > array[j])
min = j;
}
int t = array[i];
array[i] = array[min];
array[min] = t;
}
for (int i = 0; i < array.length; i++)
System.out.println(array[i] + "\t");
}
}
2.找出二维数组的最大值
package 数组;
import java.util.Random;
//算二维数组的最大值
public class Findsort{
public static void main(String args[]){
int a[][]=new int[2][5];
Random rand=new Random();
for(int i=0;i<2;i++){
for(int j=0;j<5;j++){
a[i][j]=rand.nextInt(30);
System.out.println("a["+i+"]["+j+"]="+a[i][j]);
}
}
int max;
Findsort p=new Findsort();
max=p.maxv(a);
System.out.println("max="+max);
}
public int maxv(int arr1[][]){
int i,j,max;
max=arr1[0][0];
for(i=0;i<arr1.length;i++)
for(j=0;j<arr1[i].length;j++)
if(arr1[i][j]>max)
max=arr1[i][j];
return max;
}
}