程序小白,希望和大家多交流,共同学习
19.6
//查找二维数组中的最大值
import java.util.Scanner;
public class TwoDimensionalArrayMax
{
public static void main(String[] args)
{
Integer[][] list = new Integer[5][5];
Scanner input = new Scanner(System.in);
System.out.println("创建一个二维整型数组(5行5列):");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
list[i][j] = input.nextInt();
}
}
Integer max = max(list);
System.out.println("二维数组最大的数值是:" + max);
}
//返回二维数组的最大值
public static <E extends Comparable<E>> E max(E[][] list)
{
int row = list.length;
int column = list[0].length;
E max = list[0][0];
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
if (list[i][j].compareTo(max) > 0)
{
max = list[i][j];
}
}
}
return max;
}
}
19.7
//泛型的二分法查找
//要查找就要比较,那么数据类型就要继承自Comparable
//二分法查找,数组要求有序
import java.util.Scanner;
public class GenericBinarySearch
{
public static void main(String[] args)
{
Integer[] list = new Integer[9];
Scanner input = new Scanner(System.in);
System.out.println("请输入9个整型元素(升序):");
for (int i = 0; i < 9; i++)
{
list[i] = input.nextInt();
}
System.out.println("请输入需要查找的数:");
Integer key = input.nextInt();
System.out.println(key + " 的下表是:" + binarySearch(list, key));
}
//二分法查找
public static <E extends Comparable<E>> int binarySearch(E[] list, E key)
{
int left = 0;
int right = list.length;
while (left < right)
{
int mid = (right + left) / 2;
System.out.println(mid);
if (list[mid].compareTo(key) == 0)
{
return mid;
}
if (list[mid].compareTo(key) > 0)
{
right = mid - 1;
}
if (list[mid].compareTo(key) < 0)
{
left = mid + 1;
}
}
return -1;
}
}
19.8
//打乱ArrayList
import java.util.ArrayList;
import java.util.Scanner;
public class ShuffleArrayList
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
System.out.println("生成一个整数队列,输入-1表示结束:");
boolean in = true;
while (in)
{
Integer num = input.nextInt();
if (num == -1)
{
break;
}
else
{
list.add(num);
}
}
shuffle(list);
int size = list.size();
for (int i = 0; i < size; i++)
{
System.out.print(list.get(i) + " ");
}
System.out.println();
}
public static <E> void shuffle(ArrayList<E> list)
{
int size = list.size();
for (int i = 0; i < size; i++)
{
int index = (int)(Math.random() * size);
E temp = list.get(index);
list.set(index, list.get(i));
list.set(i, temp);
}
}
}
19.9
//对ArrayList排序
import java.util.Scanner;
import java.util.ArrayList;
public class SortArrayList
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
System.out.println("创建一个整型列表,输入-1表示结束:");
boolean in = true;
while (in)
{
Integer num = input.nextInt();
if (num == -1)
{
break;
}
else
{
list.add(num);
}
}
sort(list);
int size = list.size();
for (int i = 0; i < size; i++)
{
System.out.print(list.get(i) + " ");
}
System.out.println();
}
public static <E extends Comparable<E>>
void sort(ArrayList<E> list)
{
int size = list.size();
for (int i = 0; i < size - 1; i++)
{
E min = list.get(i);
int minIndex = i;
for (int j = i + 1; j < size; j++)
{
if (list.get(j).compareTo(min) < 0)
{
min = list.get(j);
minIndex = j;
}
}
if (minIndex != i)
{
list.set(minIndex, list.get(i));
list.set(i, min);
}
}
}
}