アレイ関連の演習
1.配列の平均を求めます
メソッドavgを実装し、配列をパラメーターとして受け取り、配列内のすべての要素の平均を見つけます(メソッドの戻り値の型に注意してください)。
/**
* Created with IntelliJ IDEA.
* Description:实现一个方法 avg, 以数组为参数, 求数组中所有元素的平均值(注意方法的返回值类型).
* User: starry
* Date: 2020 -12 -11
* Time: 15:53
*/
public class Work1 {
public static int avg(int[] arr){
int sum=0;
// for(int i=0;i<arr.length;i++){
// sum=sum+arr[i];
// }
for(int a:arr){
sum+=a;
}
return sum/arr.length;
}
public static void main(String[] args) {
int[] arr=new int[]{
1,2,3,4,5};
int avg=avg(arr);
System.out.println(avg);
}
}
2.配列のすべての要素の合計
配列をパラメーターとして受け取るメソッドsumを実装して、配列のすべての要素の合計を見つけます。
/**
* Created with IntelliJ IDEA.
* Description:实现一个方法 sum, 以数组为参数, 求数组所有元素之和.
* User: starry
* Date: 2020 -12 -11
* Time: 16:14
*/
public class Work2 {
public static int sum(int[] arr){
int sum=0;
for(int a:arr){
sum+=a;
}
return sum;
}
public static void main(String[] args){
int[] arr={
1,2,3,4,5};
System.out.println(sum(arr));
}
}
3.元の配列要素の値を変更します
メソッド変換を実装し、配列をパラメーターとして受け取り、ループして配列内の各要素に2を掛け、対応する配列要素に設定します。たとえば、元の配列は{1、2、3}であり、変更後は{2、4、6}です
/**
* Created with IntelliJ IDEA.
* Description:实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上.
* 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
* User: starry
* Date: 2020 -12 -11
* Time: 16:21
*/
public class Work3 {
public static void transform(int[] arr){
for(int i=0;i< arr.length;i++){
arr[i]*=2;
}
}
public static void main(String[] args){
int[] arr=new int[]{
1,2,3,4,5};
transform(arr);
for(int a:arr){
System.out.println(a);
}
}
}
4.配列を印刷します
配列をパラメーターとして受け取り、配列内の各要素をループして、各要素の値を出力するメソッドprintArrayを実装します。
/**
* Created with IntelliJ IDEA.
* Description:实现一个方法 printArray, 以数组为参数, 循环访问数组中的每个元素, 打印每个元素的值.
* User: starry
* Date: 2020 -12 -11
* Time: 16:35
*/
public class Work4 {
public static void printArray(int[] arr){
for(int a:arr){
System.out.println(a);
}
}
public static void main(String[] args){
int[] arr={
1,2,3,4,5};
printArray(arr);
}
}
5.配列を作成し、初期値を割り当てます
int型の配列を作成し、要素の数は100で、各要素を1〜100に順番に設定します。
/**
* Created with IntelliJ IDEA.
* Description:创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
* User: starry
* Date: 2020 -12 -11
* Time: 16:44
*/
public class Work5 {
public static void main(String[] args) {
int[] arr=new int[100];
for(int i=0;i<arr.length;i++){
arr[i]=i+1;
}
for(int i:arr){
System.out.print(i+" ");
}
}
}
6、バブルソート
整数配列が与えられた場合、バブルソート(昇順ソート)を実装します
import java.util.Arrays;
/**
* Created with IntelliJ IDEA.
* Description:给定一个整型数组, 实现冒泡排序(升序排序)
* User: starry
* Date: 2020 -12 -27
* Time: 10:10
*/
public class Work6 {
public static void bubbleSort(int[] arr){
int i,j;
for(i=0;i<arr.length-1;i++){
int time=0;
for(j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
time=1;
}
}
if(time==0){
return;
}
}
}
public static void main(String[] args) {
int[] arr=new int[]{
53,12,48,86,74,55,32,57,49,99};
System.out.println("初始为:"+Arrays.toString(arr));
bubbleSort(arr);
System.out.println("排序后为:"+Arrays.toString(arr));
}
}
7.アレイは正常ですか?
整数配列が与えられた場合、配列が順序付けられている(増加している)かどうかを判断します
import java.util.Arrays;
/**
* Created with IntelliJ IDEA.
* Description:给定一个整型数组, 判定数组是否有序(递增)
* User: starry
* Date: 2020 -12 -27
* Time: 10:40
*/
public class Work7 {
public static boolean judgeSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
if(arr[i]>=arr[i+1]){
return false;
}
}
return true;
}
public static void main(String[] args) {
int[] arr1=new int[]{
53,12,48,86,74,55,32,57,49,99};
System.out.println("数组1为:"+ Arrays.toString(arr1));
System.out.println("数组1是否有序:"+judgeSort(arr1));
int[] arr2=new int[]{
1,2,3,4,5,6,7,8,9,10};
System.out.println("数组2为:"+ Arrays.toString(arr2));
System.out.println("数组2是否有序:"+judgeSort(arr2));
}
}
8.二分探索
順序付けられた整数配列が与えられた場合、バイナリ検索を実装します
import java.util.Arrays;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:给定一个有序整型数组, 实现二分查找
* User: starry
* Date: 2020 -12 -27
* Time: 10:49
*/
public class Work8 {
public static int binarySearch(int[] arr,int a){
int len=arr.length;
int left=0;
int right=len-1;
int mid;
for(int i=0;i<len;i++){
mid=(left+right)/2;
if(arr[mid]>a){
right=mid-1;
}else if(arr[mid]<a){
left=mid+1;
}else{
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr=new int[]{
11,22,33,44,55,66,77,88,99,100};
System.out.println("数组为"+ Arrays.toString(arr));
System.out.println("请输入要查找的数字");
Scanner cin=new Scanner(System.in);
int a=cin.nextInt();
int result=binarySearch(arr,a);
if(result==-1){
System.out.println("该数字在数组中未出现");
}else{
System.out.println("该数字所在数组下标为:"+result);
}
}
}
9.アレイのコピー
メソッドcopyOfを実装して整数配列をコピーし、新しい配列を取得します。
import java.util.Arrays;
/**
* Created with IntelliJ IDEA.
* Description:实现一个方法 copyOf, 对一个整型数组进行拷贝, 得到一个新的数组.
* User: starry
* Date: 2020 -12 -27
* Time: 11:32
*/
public class Work9 {
public static int[] copyOf(int[] arr){
int[] brr=new int[arr.length];
for(int i=0;i<brr.length;i++){
brr[i]=arr[i];
}
return brr;
}
public static void main(String[] args) {
int[] arr=new int[]{
11,22,33,44,55,66,77,88,99,100};
System.out.println("数组1为:"+ Arrays.toString(arr));
System.out.println("经拷贝后,数组2为:"+Arrays.toString(copyOf(arr)));
}
}
10.配列から文字列へ
整数配列を文字列に変換するメソッドtoStringを実装します。たとえば、配列{1、2、3}の場合、返される文字列は「[1、2、3]」です。コンマの位置と数に注意してください。
import java.util.Arrays;
/**
* Created with IntelliJ IDEA.
* Description:实现一个方法 toString, 把一个整型数组转换成字符串. 例如数组 {1, 2, 3} ,
* 返回的字符串为 "[1, 2, 3]", 注意 逗号 的位置和数量.
* User: starry
* Date: 2020 -12 -27
* Time: 11:44
*/
public class Work10 {
public static String ToString(int[] array) {
if(array == null) {
return null;
}
String ret = "[";
for (int i = 0; i < array.length; i++) {
ret = ret + array[i];
if(i != array.length-1) {
ret += ", ";
}
}
ret += "]";
return ret;
}
public static void main(String[] args) {
int[] array = {
1,2,3};
System.out.println(Arrays.toString(array));
}
}