对下列数字进行排序 3 1 6 2 9 0 7 4 5 8

public class 排序 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] arr = {3,1,6,2,9,0,7,4,5,8};
		for(int i = 0;i<arr.length-1;i++) {
			for(int l = 0;l<arr.length-i-1;l++) {
				if(arr[l+1]>arr[l]) {
					int c = arr[l];
					arr[l] = arr[l+1];
					arr[l+1]=c;
				}
			}
		}
		for(int i = 0; i<arr.length;i++) {
			System.out.print(arr[i]+" ");
		}

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是对题目的回答: 利用增量排序法对给定序列{9, 8, 7, 6, 5, 4, 3, 2, 1}利用增量序列{1, 3, 7}进行排序的过程如下: 首先,取增量1,将序列分为长度为1的子序列,每个子序列都是有序的,因为每个子序列只包含一个元素。 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 然后,取增量3,将序列分为长度为3的子序列,对每个子序列进行插入排序。 9 8 7 | 6 5 4 | 3 2 1 插入排序后: 7 8 9 | 4 5 6 | 1 2 3 最后,取增量7,将序列分为长度为7的子序列,对每个子序列进行插入排序。 7 8 9 4 5 6 1 | 2 3 插入排序后: 1 2 3 7 8 9 4 | 5 6 此时,我们需要将子序列 {4, 5, 6} 插入到已排好序的序列中。 1 2 3 4 5 6 7 8 9 因此,最终得到的排序结果为{1, 2, 3, 4, 5, 6, 7, 8, 9}。 请注意,每个步骤中的空格表示一个空元素,用于表示相邻的子序列之间的间隔。此外,开头和结尾不能有多余的空元素。 ### 回答2: 首先,我们先对增量序列进行遍历,对于每个增量间隔,都进行一次插入排序。初始序列为{9, 8, 7, 6, 5, 4, 3, 2, 1},三个增量分别为1,3,7。 1、增量为1时,序列不会发生变化,不需要排序。 2、增量为3时,按照3开始的位置分为三个分组,即(9,6,3)(8,5,2)(7,4,1),对于每个分组分别进行插入排序。 第一步,对于(9,6,3)这个分组,将9与6比较,9大于6,将9向右移一位,保留初始位置,然后再将6移到初始位置。最后序列为(6,9,7,8,5,4,3,2,1)。 第二步,对于(8,5,2)这个分组,将8与5比较,8大于5,将8向右移一位,保留初始位置,然后再将5移到初始位置。同样地,2也需要被移动。最后序列为(6,9,7,5,8,4,3,2,1)。 第三步,对于(7,4,1)这个分组,将7与4比较,7大于4,将7向右移一位,保留初始位置,然后再将4移到初始位置。同样地,1也需要被移动。最后序列为(6,9,4,5,7,1,3,2,8)。 3、增量为7时,按照7开始的位置分为一个分组,即(6,2),进行插入排序。因为已经排好序了,可以直接输出结果。 整个排序过程中,序列被分为了三个分组依次排序,最后得到了排好序的序列(1,2,3,4,5,6,7,8,9)。 ### 回答3: 首先,希尔排序是一种插入排序的变种,通过将原序列拆分成若干子序列分别进行插入排序,最终合并成一个有序序列。而增量序列是希尔排序的关键,增量序列的选择会影响希尔排序的效率。 给定初始序列{9, 8, 7, 6, 5, 4, 3, 2, 1},使用增量序列{1, 3, 7}进行排序,其分步结果如下: 第一次排序,增量为1,将序列分成9个子序列,每个子序列只有一个元素,此时序列为: 9 8 7 6 5 4 3 2 1 第二次排序,增量为3,将序列分成3个子序列,每个子序列为: 9 6 3 8 5 2 7 4 1 对每个子序列分别进行插入排序,得到: 3 6 9 2 5 8 1 4 7 此时序列为: 3 2 1 6 5 4 9 8 7 第三次排序,增量为7,将序列分成1个子序列,即整个序列,对整个序列进行插入排序,得到: 1 2 3 4 5 6 7 8 9 最终得到有序序列{1, 2, 3, 4, 5, 6, 7, 8, 9}。 从分步结果可以看出,使用增量序列{1, 3, 7}进行排序,可以快速将序列变为有序。但是,确定最优增量序列仍然是一个开放问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值