算法比较基础,但是也比较有用,主要是从里面获取一下基本的逻辑思考方式。
数组中的最大值;
假设需要获取arr数组的最大值:
int max =arr[0];//任意取出数组的一个数
for(int i=0;i<arr.length;i++){
if(max<arr[i]){ //如果是获取最小值 if语句为:if(max>arr[i])
max=arr[i];
}
}
语文解释:
首先声明一个int变量max,任意取出arr数组的一个数赋值给max;
用for循环遍历arr数组,在遍历的过程中,如果max小于遍历出来的数,那么便将这个数赋值给max;
遍历完成后就可以得出for循环中最大的数
最小值就是将if语句改为:if(max>arr[i])
数组的总和:
int sum=0;
for(int i =1;i<arr.length;i++){
sum+=arr[i];
}
平均数:
int avg=0;
avg =sum/arr.length;
数组的复制:
for(int i=0; i<arr.length;i++){
arr2 =new int[arr.length];
for(int i=0;i<arr.length;i++){
arr2[i]=arr[i];
}
}
直接写arr2[i]=arr[i];而不创建arr2[i]的长度,
只是相当于创建了arr[i]的快捷方法,此时对arr2做出的所有修改,都是修改arr;
遍历:
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t")
}
数组元素的反转:
for(int =0;i<arr.length/2;i++){
int temp =arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
这个反转我没看懂到底是啥意思,自己验证一下。
排序:给bp数组排序。
int temp =0;
for(int j=0;j<1;j++){
for(int k =i+1;k<i;k++){
if(bp[i]<bp[j]){
temp=bp[i];
bp[j]=bp[i];
bp[j]=temp;
}
}
}
三种排序算法:(这是最基础的算法,需要熟记)
冒泡排序:
int temp=0;
for(int i=a.length-1;i>0;--i){
for(int j=0;j<i;++j){
if(a[j+1]<a[j]){
temp =a[j];
a[j]=a[j+1];
a[j+1]=temp
}
}
}
选择排序:
public static void selectSort(int[]a){
int minIndex=0;
int temp=0;
if((a==null)||(a.length==0))
return;
for(int i=0;i<a.length-1;i++){
minIndex=i;
for(int j=i+1;j<a.length;j++){
if(a[j]<a[minIndex]){
minIndex=j;
}
}
if(minIndex !=i){
temp=a[i];
a[i]=a[minIndex]{
a[minIndex]=temp;
}
}
}
插入排序:
private static int[] insertSort(int[]arr){
if(arr==null||arr.length<2){
return arr; }
for(int i=1;i<arr.length;i++){
for(int j=i;j>0;j--){
if(arr[j]<arr[j-1]){
int temp =arr[j];
arr[j-1]=temp;
} else{
break;
}
}
}
return arr;
}