Java基础——数组选择排序、冒泡排序、插入排序

文章目录

  • 1、选择排序
  • 2、冒泡排序
  • 3、插入排序

1、选择排序

原理:将数组中每个元素与第一个元素相比较,如果这个元素小于第一个元素,则交换这两个元素,循环第1条规则,找出最小元素,放于第1个位置,经过n-1轮比较完成排序。


		/**
		 * 选择排序
		 */
		int[] arr = {
      1, 7, 8, 9, 2, 3, 4, 5, 6 };
		System.out.println("排序前:" + Arrays.toString(arr));
		int temp;
		for (int i = 0; i < arr.length - 1; i++) {
     // 比较轮数
			for (int j = i + 1; j < arr.length; j++) {
     // 内层循环
				if (arr[i] > arr[j]) {
     // 使用temp存放,再交换
					temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		System.out.println("排序后:" + Arrays.toString(arr));
	

2、冒泡排序

原理:比较相邻的元素,将小的元素放在前面,比较一轮后,最大的就放到最后面,经过n-1轮的比较完成排序。

		/**
		 * 冒泡排序
		 */
		int[] arr = {
      1, 7, 8, 9, 2, 3, 4, 5, 6 };
		System.out.println("排序前:" + Arrays.toString(arr));
		int temp;
		for (int i = 0; i < arr.length - 1; i++) {
     // 比较轮数
			for (int j = 0; j < arr.length-i-1; j++) {
     // 内层循环
				if (arr[j] > arr[j+1]) {
     // 使用temp存放,再交换
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		System.out.println("排序后:" + Arrays.toString(arr));

3、插入排序

原理:
①、将数组分为两部分,将后部分的第一个逐一与前部分每一个元素比较,再合理位置插入。
②、插入排序算法效率要高于选择排序喝冒泡排序
开始比较的是i跟i+1开始比较;

首先:遍历一次数组,初始值为下标1
把下标1交给 temp
temp = arr[1]
进行内层循环
j = i - 1 ———— j = 1 - 1———— j = 0
这里的 j=arr[0]
(j >= 0 && arr[j] > temp)
arr[j] = 1
满足条件1 && 1 > 7
所以第一轮的比较是:1跟7比

		/**
		 * 插入排序
		 */
		int[] arr = {
      1, 7, 8, 9, 2, 3, 4, 5, 6 };
		System.out.println("排序前:" + Arrays.toString(arr));
		int temp;
		for (int i = 1; i < arr.length; i++) {
     // 比较轮数
			temp = arr[i];// 待插入类
			int j;
			for (j = i-1; (j >= 0 && arr[j] > temp); j--) {
     // 内层循环
				arr[j+1] = arr[j];//把数右移
			}
			arr[j+1] = temp;// 插入
		}
		System.out.println("排序后:" + Arrays.toString(arr));

你可能感兴趣的:(java)