二分查找和冒泡排序

二分查找(O(logn))

注意:二分查找必须是有序的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SSBO38Sh-1582380779029)(assets/二分法查找.png)]

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趟,因为最后一个数不需要比较。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jU2PYhCr-1582380779032)(assets/冒泡排序.png)]

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;
	}
发布了29 篇原创文章 · 获赞 0 · 访问量 2261

猜你喜欢

转载自blog.csdn.net/rootDream/article/details/104451772