Java数组与排序
数组
(1)概念
- 一个引用数据类型
- 用来保存多个相同的数据类型的数据
- 内存中分配一块连续的内存空间
- 一旦被定义,长度就不可更改
- 定义数组时,一些数据类型会被默认为相应的值;
- String => null;
- int ,double => 0;
- char => ‘/0’=>’’
(2)语法
- 数据类型[ ] 数组名;
- 数据类型 数组名[ ];
- 数据类型[ ] 数组名 = new int[ 数组长度 ];
- //看到new就代表在堆内存中分配空间
(3)数组方法
- .length 求长度
- System.out.print (Arrays.toString.array);打印数组
(4)数组的遍历
-
for(int i = 0; i < a.length; i++){ System.out.print(a[i]); }System.out.println(); //foreach 不能使用下标,专门用来遍历数组和集合 for(int i : a){ System.out.print(i); }
3.排序
1.冒泡排序
public static void main(String[] args){
int[] a = new int[10];
//调用Random类定义一个随机可以产生随机数的变量
Random rd = new Random();
System.out.println("数组中各元素为:")
//遍历数组,给数组赋值,并打印数组各值;
for(int i = 0; i < a.length; i++){
//产生100以内的随机数给数组赋值
a[i] = rd.nextInt(100);
//打印数组
System.out.print(a[i] + " ");
}
//换行
System.out.println();
//分析冒泡算法知道只用循环length-1次
for(int i = 0; i < a.length - 1; i++){
//内循环可把当前最大的数往后放,有序后不再参与排序
for(int j = 0; j < a.length - i -1; j++)
if(a[j] > a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
//输出数组
System.out.println(Arrays.toString.a);
}
2.选择排序
public static void main(String[] args) {
// 定义一个数组
int[] array = new int[10];
Random rd = new Random();
System.out.println("随机生成的数组是:");
for (int i = 0; i < 10; i++){
array[i] = rd.nextInt(100);
//通过产生随机数赋值给数组
System.out.print(array[i] + " ");
} //遍历数组,赋值且打印数组
System.out.println();
//排序并打印数组
selectSort(array);
for(int m : array){
System.out.print(m + " ");
}
}
public static void selectSort(int[] a) {
//外循环控制循环次数,每次选择一个数,到最后只用选择倒数第二个数就可以让最后两个数有序
for (int i = 0; i < a.length-1; i++){
//定义一个下标,默认每次a[i]最小
int index = i;
//内循环找除a[i]之前最小的数
for(int j = i;j < a.length-1; j++){
if(a[index] > a[j+1]){
index = j + 1;
}
}
//将最找到的数与a[i]做交换
int temp = a[index];
a[index] = a[i];
a[i] = temp;
}
}