1.数组的复制
String[] arr1 = new String[arr.length];
for(int i = 0;i<arr1.length;i++) {
arr1[i] = arr[i];
}
2 .数组的反转
方法一:
for(int i = 0; i<arr.length/2;i++) {
String temp = arr[i];
arr[i] = arr[arr.length -1-i];
arr[arr.length-1-i] = temp;
方法二:
for(int i = 0,j = arr.length-1;i<j;i++,j--) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
3.查找:线性查找、二分法查找
以二分法为列, 二分法查找的数组必须是有序的。
int[] arr2 = new int[] {-98,-52,-3,7,25,36,708,810};
int dest1 = 36;
int head = 0;//初始的首索引
int end = arr2.length-1;//初始的莫索引
boolean isFlag1 = true;
while(head <= end) {
int middle = (head + end)/2;
if(dest1 == arr2[middle]) {
System.out.println("找到了指定元素,位置为:" + middle);
isFlag1 = false;
break;
}else if (arr2[middle] > dest1) {
end = middle-1;
}else {//arr2[middle] < dest1
head = middle + 1;
}
}
if(isFlag1) {
System.out.println("很遗憾,没有找到哦");
}
}
}
4.数组元素的排序算法
衡量排序算法的优势:
①.时间复杂度:分析关键字的比较次数和记录的移动次数
②.空间复杂度:分析排序算法中需要多少辅助内存
③.稳定性:若两个记录A和B的关键字都相等,但排序后A、B的先后次序保持不变,则称这种算法是稳定的。
排序算法分类:内部排序和外部排序
十大内部排序算法:
选择排序:直接选择排序、堆排序
交换排序:冒泡排序、快速排序
插入排序:直接插入排序、折半插入排序、Shell排序
归并排序
桶式排序
基数排序
数组的冒泡排序的实现:
public class BubbleSortTest {
public static void main(String[] args) {
int[] arr = new int[] {32,56,65,-7,91,34,-28,65};
//冒泡排序
for(int i = 0;i < arr.length-1;i++) {
for(int j = 0;j < arr.length-1-i;j++) {
if(arr[j] > arr[j+1] ) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i = 0;i < arr.length;i++) {
System.out.print(arr[i] + "\t");
}
}
}
为啥只写冒泡排序呢? 当然是冒泡排序比较简单啊
以上就是目前我对一些数组常见算法新的总结,当然还有很多遗漏的知识点,日后会时时更新!!! 嘿嘿。