数组求最大值
一维数组求最大值
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);
}