算法导论学习2.3-4 插入排序的递归版本

原创 2012年03月28日 10:05:36
public class InsertionSortRecursion {
	public static void main(String[] args) {
		int[] data = {5, 2, 4,6,9,0, 3};
		recursion(data, 0, data.length - 1);
		for (int i = 0; i < data.length; i++) {
			System.out.print(data[i] + " ");
		}
	}
	
	public static void recursion(int[] data, int i, int j) {
		
		if (i < j) {
			int q = j - 1;
			recursion(data, i, q);
			for (int a = 0; a < j; a++) {
				int key = data[j];
				if (data[a] < key) {
					for (int b = j - 1; b >= a; b--) {
						data[b + 1] = data[b];
					}
					data[a] = key;
					break;
				}
			}				
		}		
	}
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

算法导论 2.3-7

题目 请给出一个运行时间为 的 算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断S中是否存在有两 个其和为x的元素。 分析 要求运行时间为,所以想到应该用分治法;因为要求找到某个...

算法导论 2.3-5

题目 回顾一下联系2.1-3中提到的查找问题,注意如果序列A是已排序的,就可以将该序列的中点与v进行比较。根据比较的结果,原序列中有一半就可以不用再做进一步的考虑了。二分查找就是一个不断重复这一过程...

算法导论 2.3-6(更正)

题目 观察一下2.1节给出INSERTION-SORT过程,在第5~7行的while循环中,采用了一种线性查找策略,在已排序的子数组A[1...j-1]中(反向)扫描。是否可以用二分查找策略,来将插入...

算法导论 2.3-4

题目 插入排序可以如下改写成一个递归过程:为排序A[1...n],先递归地排序A[1...n-1],然后再将A[n]插入到已排序的数组中去。对于插入排序的这一递归版本,为他的运行时间写一个递归式 ...

递归插入排序-《算法导论》学习笔记三

算法导论第二章结尾练习2.3-4提到将插入排序写递归版本,然后尝试写了个,本来写了就好了,但是调试的时候排序10w个数可以,排序100w个数就段错误,分析了一下,把结果放上来以后查看,先贴代码:#in...

算法导论学习2.3 分治法 (这个递归终于懂了。。)

import java.util.Arrays; public class MergeSort { public static void main(String[] args) { ...

算法导论学习之插入排序

《算法导论》买了好久了,基本上没怎么看,最近思想上有了准备,觉得学习才是王道。准备重新拾起来学习,下面我就《算法导论》中的排序算法中的 插入排序做了个c++的简单实现,附加解释一下自己对下面的这段代码...

算法导论学习:插入排序法的实现

今天开始我的算法学习之旅(虽然参加比赛的时候学习过遗传算法,蚁群算法这些玩意儿),拿到《算法导论》这本书,我的内心是绝望的,真的厚。。。。。可是还是抑制不住自己对学习算法的渴望。。。可以了,这些套话我...

插入排序-《算法导论》学习笔记一

算法导论第二章的第一小节是插入排序,也就是像打扑克牌整理扑克一样,从左边第二张开始,每张与前边排好序的扑克牌比较,比较到能插入的位置就插入,算法比较简单。#include #include #in...

算法导论学习心得1-----插入排序及两种不同插入方法的效率比较

插入排序的思想不多说了,就和打扑克牌时一样,拿到一张牌时从左到右比较后插入,不同的地方在于我们插入扑克牌是不用考虑移动顺序的。 按照书上第一个算法的代码,插入排序的算法如下: 插入排序1: int...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)