插入排序

package chapter1;

/**
 * 插入排序
 * 
 * 有一个n为数组,对其按照升序排列
 * 
 * 方法:从大小为1的子数组A[0]开始排序,因为A[0]就只有一个元素,所以是有序的
 * 
 * 接下来,讲A[1]插入到A[0]的前面后者后面,这取决于A[1]与A[0]的大小
 * 
 * 继续此过程,将A[i]插入到A[0···i-1]子数组中·····
 * 
 * 元素的比较次数取决于输入元素的顺序
 * 
 * 当输入序列按照非降序排列时,元素比较的次数最小,需比较n-1次
 * 
 * 当输入序列按照降序排列,且所有元素都不相同,比较的次数最大。为n(n-1)/2
 * 
 * @author guanya.zhou
 * @date 2016年11月14日
 * @Description TODO
 */
public class InsertionSort {
	
	public static void main(String[] args) {

		int[] arr = { 1, 2, 3, 6, 5, 4, 7, 8, 9, 10, 9, 8, 20, 18, 16, 14, 12, 10 };
		
		for (int i = 2; i < arr.length ; i++) {		//第一个元素默认就是有序的,从第二个元素开始
													//从第二个元素开始,依次与这个元素之前的元素对比
			
			int j = i - 1;
			
			int x = arr[i];
			
			while (j > 0 && arr[j] > x) {			//当前元素大于在他之前的元素
				
				arr[j + 1] = arr[j];				//与当前元素做比较的元素往后挪动
				
				j--;
				
			}
			
			arr[j + 1] = x;
		}
		
		for(int element : arr) {
			
			System.out.print(element + " ");
			
		}
	}
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值