算法
-
数据元素的赋值(杨辉三角、回形数等)
-
求数值型数组中元素的最大值、最小值、平均数、总和等
int[] arr = new int[10];
int sum = 0;
int min = Integer.MIN_VALUE;
int max = 0;
for(int i = 0 ; i < arr.length;i++){
arr[i] = (int)(Math.random()*90)+10;
sum += arr[i];
if(arr[i] < min){
min = arr[i];
}
if(arr[i] > max){
max = arr[i];
}
}
for (int i : arr) {
System.out.print(i+"\t");
}
System.out.println();
System.out.println("总和为:"+sum+" 平均数为:"+sum/arr.length+" 最小值为:"+min+" 最大值为:"+max);
-
数组的复制、反转、查找(线性查找、二分查找)
array2 = array1;//array2和array1指向堆空间中同一个数组实体,相当于一个快捷方式
//数组复制
int[] array1,array2;
array1 = new int[]{1,2,3};
for(int i = 0 ; i <array1.length;i++){
array2[i] = array1[i];
}//数组反转
for(int i = 0 ; i < arr.length/2 ; i++){
int temp = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = temp;
}//线性查找
String[] str = new String[]{"VC","GG","TT","UU","OO"};
String s = "TT";
boolean flag = true;
for(int i = 0 ; i < str.length ; i++){
if(str[i].equals(s)){
System.out.println("找到了,位置为:"+i);
flag = false;
break;
}
}
if(flag){
System.out.println("没找到!");
}//二分查找(数组必须有序)
int arr[] = new int[] {-9,-2,4,8,99,122};
int dest =4;//目标
int head = 0;//头索引
int end = arr.length-1;//尾索引
boolean flag = true;
while(head <= end){
int middle = (head + end)/2;
if(dest == arr[middle]){
System.out.println("找到了,索引为:"+middle);
flag = false;
break;
}else if(dest > arr[middle]){//目标在右侧
head = middle+1;
}else {//dest < arr[middle],目标在左侧
end = middle - 1;
}
}
if(flag){
System.out.println("没找到!");
} -
数组元素的排序算法
选择排序:直接选择、堆排序
交换排序:冒泡排序、快速排序
//冒泡排序
int[] arr = new int[]{33,7,99,23,65,6,45,5};
for(int i = arr.length-1 ; i > 0 ; i--){//共比较arr.length-1趟
for(int j = 0 ; j < i ; j++){//每趟找到最大的放到最后,每次比较i次
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
插入排序:直接插入排序、折半插入排序、shell排序
归并排序
桶式排序
基数排序
性能比较: