Java---数组练习-获取最值,选择、冒泡排序

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版权协议,转载请附上原文出处链接和本声明。