二分查找(O(logn))
注意:二分查找必须是有序的。
public static int BinarySearch(int[] arr,int value){
int min = 0,max = arr.length-1;
while(true){
int mid = (min + max)/2;
if(value > arr[mid]){
min = mid + 1;
}else if(value < arr[mid]){
max = mid - 1;
}else {
return mid;
}
if(max < min){
return -1;
}
}
}
冒泡排序
注意:冒泡排序只需要进行arr.length-1趟,因为最后一个数不需要比较。
public static void Sort(int[] arr){
//控制比较的趟数,每一趟确定一个最大值。
for(int i = 0;i < arr.length-1;i++){
//内侧循环控制每一趟比较的次数。
boolean flag = true;//假设本趟比较完毕。
for(int j = 0;j < arr.length-i-1;j++){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
//推翻假设。
flag = false;
}
}
//如果假设成立就结束循环
if(flag){
break;
}
}
}
反序
/**首先把字符串转化为字符数组,然后把字符数组反序。
* 最后把字符数组转化为字符串输出就可以得到字符串反序结果。
*
*/
public class ReverseString {
public static void main(String[] args) {
String str = "name";
char[] datas = str.toCharArray();
for(int i = 0;i < datas.length/2;i++){
char temp = datas[i];
datas[i] = datas[datas.length-1-i];
datas[datas.length-1-i] = temp;
}
System.out.println(new String(datas, 0, datas.length));
}
}
数组->字符串
public static String toString(int[] arr){
String str = "[";
for(int i = 0;i < arr.length;i++){
if(i == arr.length-1){
str += arr[i] + "]";
}else {
str += arr[i] + ", ";
}
}
return str;
}
获取数组中最大值
public static int getMaxValue(int[] arr){
int max = arr[0];
int length = arr.length;
for(int i = 0;i < length;i++){
if(max < arr[i]){
max = arr[i];
}
}
return max;
}
删除数组中指定索引的元素
public static void deleteValue(int[] arr,int index){
for(int i = index;i < arr.length-1;i++){
arr[i] = arr[i+1];
}
arr[arr.length-1] = 0;
}
插入数据
public static int[] insertValue(int[] arr,int index,int value){
// 扩容操作
int[] newArr = new int[arr.length+1];
for(int i = 0;i < arr.length;i++){
newArr[i] = arr[i];
}
arr = newArr;//使arr指向newArr
// 从最后两个位置开始进行后移操作。
for(int i =arr.length-2;i >= index;i--){
arr[i+1]=arr[i];
}
arr[index] = value;
return arr;
}