冒泡排序算法:
重复地遍历要排序的元素,依次比较相邻两个元素,如果前一个比后一个大,就把它们两个调换位置,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端
冒泡排序算法分析
用二重循环将5个数字升序排序
5个数字如何存放 ?
定义数组
控制比较多少轮?
外层循环,循环变量 i
控制每轮比较多少次?
内层循环,循环变量 j 交换数据
冒泡排序速记口诀(升序)
N 个数字来排队 两两相比小靠前 外层循环 N-1 内层循环 N-1-i
Arrays类常用方法
方法名称 | 说明 |
boolean equals(array1,array2) | 比较array1和array2两个数组是否相等 |
sort(array) | 对数组array的元素进行升序排列 |
String toString(array) | 将一个数组array转换成一个字符串 |
void fill(array,val) | 把数组array所有元素都赋值为val |
copyOf(array,length) | 把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致 |
int binarySearch(array, val) | 查询元素值val在数组array中的下标(要求数组中元素已经按升序排列) |
例:
public static void main(String[] args) {
int[] numArray = {6,4,3,1,9,8,2,7,0};
int[] numArray2 = {6,5,4,3,1,9,9,2,7,0};
//1.排序 sort()
/*Arrays.sort(numArray);
for (int num : numArray) {
System.out.print(num + " ");
}*/
//2.比较 equals
/*boolean flag = numArray.equals(numArray2);
String a = "a";
String b = "a";
System.out.println(a.equals(b));
boolean isEquals = Arrays.equals(numArray,numArray2);
System.out.println("两个数组是否相等:" + isEquals);*/
//3.转字符串 toString
/* System.out.println(Arrays.toString(numArray));
System.out.println(numArray);*/
//4.统一赋值 ,fill
/*Arrays.fill(numArray,0);
for (int num : numArray){
System.out.print(num + " ");
}*/
//5.复制,copyOf
/*//int[] numArray3 = Arrays.copyOf(numArray,10);
int[] numArray3 = Arrays.copyOf(numArray,15);
for (int num : numArray3) {
System.out.print(num + " ");
}*/
//6.查找 binarySearch
Arrays.sort(numArray);
int index = Arrays.binarySearch(numArray,5);
//System.out.println("0在数组中的下标是:" + index);
System.out.println("11在数组中的下标是:" + index);
System.out.println();
}
二维数组
<数据类型> [ ][ ] 数组名; 或者 <数据类型> 数组名 [ ][ ];
int [ ][ ] scores; //定义二维数组
scores=new int[5][50]; //分配内存空间
或者
int [ ][ ] scores = new int[5][50];
注意: 定义二维数组时,要定义最大维数