java插入排序

本文详细介绍了两种经典的排序算法——插入排序和希尔排序。首先解释了插入排序的基本原理及其实现过程,随后深入探讨了希尔排序的分组思想与排序步骤,并提供了具体的实现代码。

1、简单插入排序

/*
 * 插入排序
 * 从队头到队尾依次从队列中取出一个数,把他插入左侧已经排序的队列中
 * 1、从队列中取出一个数,索引为i计为a[i],存入变量t中
 * 2、与i的左侧即索引从0到i-1的数依次比较
 * 3、如果t比i左侧的某一个数小就把它与t交换
 * 4、把通过遍历后的t存入a[i]
 */
private static void insertSort(int[] a) {
		// 从头开始遍历
		for (int i = 0; i < a.length; i++) {
			// 把上一层拿到的数字与从0到i-1依次遍历的数进行比较
			for (int j = 0; j < i; j++) {
				// 如果a[i]的值比a[j]小就交换他们,直至比较到i-1(因为a[i]在右边,而右边存大的数)
				if (a[j] > a[i]) {
					int t = a[i];
					a[i] = a[j];
					a[j] = t;
				}
			}
		}
	}

2、希尔排序
在这里插入图片描述
步骤:
在这里插入图片描述
1、给出增量(共几组)
2、依次遍历组数(第几组)
3、依次遍历组内元素(第几个元素)
4、把遍历的组内元素运用直接插入排序,插入到组内已排序的序列中

// 希尔排序
	public static void ShellSort(int[] arr) {
		int l = arr.length;
		// 更改组数(共几组)
		for (int i = l / 2; i >= 1; i /= 2) {
			// 依次遍历组数(第几组)
			for (int j = 0; j < i; j++) {
				// 依次遍历组内元素(第几个元素)
				for (int k = j; k < l; k += i) {
					// 把遍历的组内元素运用直接插入排序,插入到组内已排序的序列中
					for (int z = j; z < k; z += i) {
						// 依次遍历已排序的组内元素,如果组内已排序元素比插入数据大,就交换他们
						if (arr[z] > arr[k]) {
							int swap = arr[z];
							arr[z] = arr[k];
							arr[k] = swap;
						}
					}
				}
			}
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值