数组常见程序

数组求最大值

一维数组求最大值

int[] arr = {5,4,78,65,45,61};
		int max = arr[0];
		for (int i=0; i<arr.length; i++)
		{
			if(max<arr[i])
			{
				max = arr[i];

			}
		}
		System.out.println("数组中的最大值是:"+max);

二维数组求最大值

int[][] arr2 = {{90,8,7,6},{88,45,2,6},{54,65,21,12},{45,12,85,62}};
	int max2 = arr[0];
	for (int i=0; i<arr2.length; i++)
	{
		for(int j=0; j<arr2[i].length; j++)
		{
			if(max2<arr2[i][j])
				max2=arr2[i][j];
		}
	}
	System.out.println("数组中的最大值是:"+max2);

快速找到1~100内重复的两个数

class FindReNum 
{
	public static void main(String[] args) 
	{
		int[] arr = new int[100];
		for (int i=0; i<arr.length; i++)
		{
			arr[i]=i;
		}
		arr[3]=8;
		int[] re = new int[100];
		for(int i=0;i<arr.length; i++)
		{
			re[arr[i]]++;
		}
		for(int i=0;i<re.length; i++)
		{
			if(re[i]==2)
				System.out.println("重复的数字是"+arr[i]);
		}
	}
}

选择排序

交换次数多的选择排序

int[] arr = {5,4,78,65,45,61};
		for (int i=0;i<arr.length ;i++ )
		{
			for(int j=i; j<arr.length; j++)
			{
				if(arr[i]>arr[j])//交换
				{
					int temp;
					temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		for (int i=0; i<arr.length; i++)
		{
			System.out.println(arr[i]);
		}

减少交换次数的选择排序

int tempNum;
		int tempId;
		int[] arr = {5,4,78,65,45,61};
		for (int i=0;i<arr.length ;i++ )
		{
			tempNum = arr[i];
			tempId = i;
			for(int j=i; j<arr.length	;j++)
			{
				if(tempNum>arr[j])//改变符号可改变升降
				{
					tempNum=arr[j];
					tempId = j;
				}
				
			}
			int temp = arr[i];
			arr[i] = arr[tempId];
			arr[tempId] = temp;
		}




		for (int i=0; i<arr.length; i++)
		{
			System.out.println(arr[i]);
		}

冒泡排序

class ArraySort1 
{
	public static void main(String[] args) 
	{
		/*冒泡排序*/
		int[] arr = {5,4,78,65,45,61};
		for (int i=0; i<arr.length; i++)
		{
			for ( int j=0; j<arr.length-i-1; j++)
			{
				if(arr[j]>arr[j+1])
				{
					int temp;
					temp =arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		for (int i=0; i<arr.length; i++)
		{
			System.out.println(arr[i]);
		}
	}
}

折半查找

public static void main(String[] args) 
	{
		int[] arr = {4,5,45,61,65,78};
		int left=0;
		int right=arr.length-1;
		int mid;
		int num = 15;
		while(left<=right)
		{
			mid = (left+right) / 2;
			if(arr[mid]==num)
			{
				System.out.println("num的下标是"+mid);
				break;
			}
				
					
			else if(arr[mid]<num)
			{
				left = mid+1;
			}
			else 
				right = mid - 1;
		}
		if(left>right)
			System.out.println("num的不在此数组中");
		
	}

同时获取数组中的最大值和最小值

public static void main(String[] args) 
	{
		int[] arr = {5,4,78,65,45,61};
		int max;
		int min;
		if(arr[0]<arr[1])
		{
			max = arr[1];
			min = arr[0];
		}
		else
		{
			max = arr[0];
			min = arr[1];
		}
		for (int i=2;i<arr.length-1; i++,i++)
		{
			if(arr[i]>arr[i+1])
			{
				if(arr[i]>max)
				{
					max = arr[i];
				}
				if(arr[i+1]<min)
				{
					min = arr[i+1];
				}
			}else
			{
				if(arr[i+1]>max)
				{
					max = arr[i+1];
				}
				if(arr[i]<min)
				{
					min = arr[i];
				}
			}

		}
		System.out.println("数组中的最大值是:"+max);
		System.out.println("数组中的最小值是:"+min);
	}





  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值