冒泡排序、简单选择排序和二分法查找

冒泡排序:

            原理:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。

package org.westos.Demo;

public class MaoPaoDemo {
	public static void main(String[] args) {
		int[] arr = { 6, 2, 5, 3, 7, 8 };
		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]) { // y < arr.length-1 防止角标越界异常
					int temp = arr[j]; // y < arr.length-1 -x 避免重复比较
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}

		}
		for (int x = 0; x < arr.length; x++) {
			System.out.print(arr[x]+" ");
		}
	}
}

简单选择排序:

          简单选择排序原理: 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处

package org.westos.Demo;

//  选择排序原理
//        从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处 
public class jiandanpaixu {
	public static void main(String[] args) {
		int[] arr = { 2, 5, 3, 1, 6, 4, 8 };// 对数组进行静态初始化

		for (int i = 0; i < arr.length - 1; i++)// 外层循环控制机比较的次数
			for (int j = i + 1; j < arr.length; j++) {// 内层循环控制比较的元素
				if (arr[i] > arr[j]) {// 如果arr[i]大于arr[j]交换
					int t = arr[i];
					arr[i] = arr[j];
					arr[j] = t;
				}
			}

		for (int x = 0; x < arr.length; x++) {// 遍历排序好的
			System.out.print(arr[x] + " ");
		}

	}

}

二分法查找

              二分法查找原理:数据必须有序排列。先从中间开始查找,若中间的数据值与想要查找到值相等,则查找成功。若中间值大于所查找的值,将最后的max移向mid得前一个位置。如果小于所查找的值,将最前面的min移向mid的前一个位置。不断重复着一项操作,直到找到为止。

package org.westos.Demo;

public class erfenfa {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 4, 6, 8, 9 };// 定义一个静态数组
		int number = 6;// 查找的值为6
		int min = 0;// 最小边界
		int max = arr.length - 1;// 最大边界
		int mid = (min + max) / 2;// 中间
		// 循环查找指定值的位置
		while (arr[mid] != number) {
			if (arr[mid] > number) {
				// 范围在左边,更新最大值
				max = mid - 1;
			} else {
				// 范围在右边, 更新最小值
				min = mid + 1;
			}
			// 判断查找范围
			if (min > max) {
				mid = -1;// 没找到
				break;
			}
			// 更新中间值 mid
			mid = (min + max) / 2;
		}
		System.out.println("您查找的值在第" + mid + "个位置");

	}

}

猜你喜欢

转载自blog.csdn.net/qq_41942241/article/details/81319813
今日推荐