java学习笔记day4
一、常见算法。
package arry;
public class ArrayTest1 {
//定义一个int数组,包含10个元素,分别赋一些随机数
//求最大值,最小值,平均值并输出
//要求所有数都是二位数
public static void main(String[] args) {
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
arr[i]=(int) (Math.random() * (99 - 10 +1) + 10);
System.out.println(arr[i]);
}
//求数组最大值
int maxValue = arr[0];
for(int i = 0; i < arr.length;i++){
if(maxValue < arr[i]){
maxValue = arr[i];
}
}
System.out.println("最大值为:" + maxValue);
int minValue = arr[0];
for(int i = 0; i < arr.length;i++){
if(maxValue > arr[i]){
minValue = arr[i];
}
}
System.out.println("最小值为:" + minValue);
int sum = 0;
for(int i =0; i<arr.length; i++){
sum+=arr[i];
}
System.out.println("总和为:"+ sum);
int i = arr.length;
System.out.println("平均值为"+ sum/i);
}
}
package arry;
public class ArrayTest2 {
public static void main(String[] args) {
int[] array1,arrar2;
array1 = new int[]{2,3,5,7,11,13,17,19};
for (int i = 0;i < array1.length; i++){
System.out.println(array1[i] + "\t");
}
arrar2 = array1;
//修改array2的偶索引值(如array[0]=0,array[2]=2)
for (int i = 0;i < arrar2.length;i++){
if ( i % 2 ==0 ){
arrar2[i] = i;
}
}
System.out.println();
for (int i = 0;i < array1.length; i++){
System.out.println(array1[i] + "\t");
}
}
}
package arry;
public class ArrayTest3 {
public static void main(String[] args) {
int[] array1,arrar2;
array1 = new int[]{2,3,5,7,11,13,17,19};
for (int i = 0;i < array1.length; i++){
System.out.println(array1[i] );
}
arrar2 = new int[array1.length];
//修改array2的偶索引值(如array[0]=0,array[2]=2)
for (int i = 0;i < arrar2.length;i++){
arrar2[i] = i;
}
System.out.println();
for (int i = 0;i < array1.length; i++){
System.out.println(array1[i] );
}
}
}
package arry;
public class ArrayTest4 {
public static void main(String[] args) {
String[] arr = new String[]{"JJ","DD","BB","GG","AA"};
//数组的复制
String[] arr1=new String[arr.length];
for (int i =0;i<arr.length;i++){
arr1[i]=arr[i];
}
//数组的反转
for (int i =0;i<arr.length / 2;i++){
String temp = arr[i];
arr[i]=arr[arr.length - i -1];
arr[arr.length - i -1] = temp;
}
for (int i =0;i<arr.length;i++){
System.out.println(arr1[i]);
}
}
}
数组的线性查找
package arry;
public class ArrayTest4 {
public static void main(String[] args) {
String[] arr = new String[]{"JJ","DD","BB","GG","AA"};
//数组的复制
String[] arr1=new String[arr.length];
for (int i =0;i<arr.length;i++){
arr1[i]=arr[i];
}
//查找 线性查找
String dest = "BB";
boolean isFlag = true;
for (int i = 0;i < arr.length;i++){
if (dest.equals(arr[i])){
System.out.println("找到了指定的元素,位置为"+i);
isFlag = false;
break;
}
}
if (isFlag){
System.out.println("很遗憾,没有找到啦");
}
//二分法查找,前提:查找的数组必须有序
int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
int dest1 = -34;
int head = 0;
int end = arr2.length-1;
boolean isFlag1 = true;
while (head<=end){
int middle = (head + end )/2;
if (dest1 == arr2[middle]){
System.out.println("找到了指定元素;位置为:"+ middle);
isFlag1 = false;
break;
}else if (arr2[middle] > dest1){
end = middle -1;
} else {
head = middle + 1;
}
}if (isFlag1){
System.out.println("没有找到");
}
}
}
数组的排序算法
冒泡排序
package arry;
public class ArrayTest5 {
/*
数组冒泡排序的实现
*/
public static void main(String[] args) {
int[] arr = new int[]{43,32,76,-98,0,64,33,-21,99};
//冒泡排序
for (int i = 0;i < arr.length - 1;i++){
for (int j = 0;j < arr.length - 1 -i;j++ ){
if(arr[j] > arr[ j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1 ] = temp;
}
}
}
for (int i = 0;i < arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}
Arrrays工具类的使用
package arry;
import com.sun.org.apache.xpath.internal.operations.Equals;
import java.sql.Array;
import java.util.Arrays;
public class ArrayTest6 {
public static void main(String[] args) {
/*
操作系统的工具类里面定义了很多操作数组的方法
*/
int [] arr1 = new int[]{1,2,3,4};
int [] arr2 = new int[]{1,3,2,4};
boolean isEquels= Arrays.equals(arr1,arr2);
System.out.println(isEquels);
System.out.println(Arrays.toString(arr1));
Arrays.fill(arr1,10);
Arrays.sort(arr2);
System.out.println(arr2);
}
}