1、获取数组中的最大值、最小值
/*
给定一个数组{5,1,6,4,2,8,9}
1、获取数组中的最大值,及最小值
*/
public class ArrayTest {
public static void main(String[] args) {
//定义int类型数组
int arr[] = {5,1,6,4,2,8,9};
int max = getMax(arr);
System.out.println("max="+max);
int min = getMin(arr);
System.out.println("min="+min);
//定义double类型数组
double arr2[] = {3.1,3.5,5.5,2.6,4.7};
double max2 = getMax(arr2);
System.out.println("max="+max2);
}
//获取int类型数组的最大值函数
public static int getMax(int[] arr)
{
int max = arr[0];
for(int x = 1;x < arr.length;x++)
{
if(arr[x]>max)
max=arr[x];
}
return max;
}
//获取double类型数组的最大值函数。这里可以用函数的重载。
public static double getMax(double[] arr)
{
double max = arr[0];
for(int x = 1;x < arr.length;x++)
{
if(arr[x]>max)
max = arr[x];
}
return max;
}
//获取int类型数组的最小值函数
public static int getMin(int[] arr)
{
int min = arr[0];
for(int x = 1;x < arr.length;x++)
{
if(arr[x] < min)
min = arr[x];
}
return min;
}
}
运行结果:
max=9
min=1
max=5.5
2、对数组进行排序
选择排序
//选择排序
public class ArrayTest2
{
public static void main(String[] args)
{
int[] arr = {5,7,6,2,1,0,9,3};
//排序前打印
printArr(arr);
//排序
selectSort(arr);
//排序后打印
printArr(arr);
}
//对数组排序的函数(从小到大排序)
public static void selectSort(int[] arr)
{
for (int i = 0; i < arr.length-1; i++)
{
for (int j = i+1; j < arr.length; j++)
{
if (arr[j]<arr[i])//改变符号反向排序
{
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}
//打印数组的函数
public static void printArr(int[] arr)
{
for (int i = 0; i < arr.length; i++)
{
if (i!=arr.length-1)
{
System.out.print(arr[i]+",");
}
else
{
System.out.println(arr[i]);
}
}
}
}
运行结果:
5,7,6,2,1,0,9,3
0,1,2,3,5,6,7,9
冒泡排序
冒泡排序:相邻的两个元素进行比较,如果符合条件就换位。
//冒泡排序
public class ArrayTest3
{
public static void main(String[] args)
{
int[] arr = {5,7,9,3,2,0,4,8};
//排序前
printArr(arr);
//冒泡排序
bubbleSort(arr);
//排序后
printArr(arr);
}
//定义冒泡排序的函数
public static void bubbleSort(int[] arr)
{
for (int i = 0; i < arr.length-1; i++)
{
for (int j = 0; j < arr.length-i-1; j++)//-i:让每一次比较的元素减少1,-1:避免角标越界。
{
if (arr[j]>arr[j+1])//改变符号反向排序
{
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
//定义打印数组的函数
public static void printArr(int[] arr)
{
for (int i = 0; i < arr.length; i++)
{
if (i!=arr.length-1)
{
System.out.print(arr[i]+", ");
}
else
{
System.out.println(arr[i]);
}
}
}
}
运行结果:
5, 7, 9, 3, 2, 0, 4, 8
0, 2, 3, 4, 5, 7, 8, 9
在上面的两种排序代码中可以看到,不管是选择哪一种排序方法都需要对数组中的元素进行位置的置换,因此可以将位置置换这部分代码抽取出来,定义为一个位置置换的函数,在需要的时候进行调用即可。
//选择排序和冒泡排序
public class ArrayTest
{
public static void main(String[] args)
{
System.out.println("------------选择排序-------------");
int[] arr = {5,7,6,2,1,0,9,3};
//排序前打印
printArr(arr);
//选择排序
selectSort(arr);
//排序后打印
printArr(arr);
System.out.println("------------冒泡排序-------------");
int[] arr2 = {5,7,9,3,2,0,4,8};
//排序前打印
printArr(arr2);
//选择排序
bubbleSort(arr2);
//排序后打印
printArr(arr2);
}
//对数组进行选择排序的函数(从小到大排序)
public static void selectSort(int[] arr)
{
for (int i = 0; i < arr.length-1; i++)
{
for (int j = i+1; j < arr.length; j++)
{
if (arr[j]<arr[i])//改变符号反向排序
{
swap(arr, i, j);
}
}
}
}
//定义对数组进行冒泡排序的函数
public static void bubbleSort(int[] arr)
{
for (int i = 0; i < arr.length-1; i++)
{
for (int j = 0; j < arr.length-i-1; j++)//-i:让每一次比较的元素减少1,-1:避免角标越界。
{
if (arr[j]>arr[j+1])//改变符号反向排序
{
swap(arr, j, j+1);
}
}
}
}
//进行位置置换的函数
public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
//打印数组的函数
public static void printArr(int[] arr)
{
for (int i = 0; i < arr.length; i++)
{
if (i!=arr.length-1)
{
System.out.print(arr[i]+",");
}
else
{
System.out.println(arr[i]);
}
}
}
}
运行结果:
------------选择排序-------------
5,7,6,2,1,0,9,3
0,1,2,3,5,6,7,9
------------冒泡排序-------------
5,7,9,3,2,0,4,8
0,2,3,4,5,7,8,9
数组+for循环嵌套练习
//打印数组:如下
//[1,4,5,7,9,2]
//*
//****
//*******
//*********
//**
public class ArrayDemo4 {
public static void main(String[] args) {
int[] arr = { 1, 4, 5, 7, 9, 2 };
for (int i = 0; i < arr.length; i++) {
for (int a = 0; a < arr[i]; a++) {
System.out.print("*");
}
System.out.println();
}
}
}
版权声明:本文为mm0927原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。