- 浏览: 592770 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (199)
- 纯java (22)
- 中间件 (1)
- java线程 (1)
- webwork (10)
- HTML/CSS (11)
- struts2 (10)
- mysql (14)
- Linux (8)
- 字符编码和转换 (1)
- WebService (1)
- web (21)
- javascript (33)
- ajax (5)
- 随便写写 (3)
- svn (0)
- eclipse使用技巧 (10)
- Ant (1)
- 互联网发展方向 (1)
- Jquery (12)
- 视频 (2)
- MD5 (1)
- 项目经验总结 (1)
- Oracle (2)
- Netbeans (1)
- Apache/Tomcat (4)
- springside (1)
- hibernate (6)
- SpringSecurity (0)
- java与文件 (1)
- CKEditor (4)
- JSON (3)
- 笔试题 (0)
- 应用部署 (1)
- 杂七杂八 (1)
- android (1)
- jQuery UI (1)
- XML相关技术 (1)
- HTML5 (1)
- CSS3 (0)
- 正则表达式 (1)
- http协议 (3)
- 算法 (5)
- 互联网知识 (1)
最新评论
-
hp321:
我现在遇到一个开发自定义按钮的问题,想请教下你:问题如下:举例 ...
Ckeditor 如何在源码模式下添加可以显现的按钮 -
make1828:
javascript跨域解决方案(一) -
huxianwen:
问题是, ckeditor编辑器在源码模式并不能插入任何代码呀 ...
Ckeditor 如何在源码模式下添加可以显现的按钮 -
nidonglin1986:
虽然解决了问题,但是原因说的不是很明白啊。中文跟HTML标志 ...
struts2的标签在JS中的使用 中文乱码 -
ldw1986hf123:
[*]
JVM工作原理
插入排序 Insertion Sort
插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i] 又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首先比较L[i]和L[i-1],如果L[i-1]≤ L[i]騆[1..i]已排好序,第i遍处理就结束了;否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j] ≤L[j 1]时为止。
简言之,插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。
图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。
图1 对4个元素进行插入排序
在下面的插入排序算法中,为了写程序方便我们可以引入一个哨兵元素L[0],它小于L[1..n]中任一记录。所以,我们设元素的类型 ElementType中有一个常量-∞,它比可能出现的任何记录都小。如果常量-∞不好事先确定,就必须在决定L[i]是否向前移动之前检查当前位置是否为1,若当前位置已经为1时就应结束第i遍的处理。另一个办法是在第i遍处理开始时,就将L[i]放入L[0]中,这样也可以保证在适当的时候结束第i 遍处理。下面的算法中将对当前位置进行判断。
算法如下:
/**
*插入排序(WHILE循环实现)
*@paramsrc待排序数组
*/
void doInsertSort1(int[] src)
{
int len=src.length;
for(int i=1;i<len;i )
{
int temp=src[i];
int j=i;
while(src[j-1]>temp)
{
src[j]=src[j-1];
j--;
if(j<=0)
break;
}
src[j]=temp;
printResult(i 1,src);
}
}
/**
*插入排序(FOR循环实现)
*@paramsrc待排序数组
*/
void doInsertSort2(int[] src)
{
int len=src.length;
for(int i=1;i<len;i )
{
int j;
int temp=src[i];
for(j=i;j>0;j--)
{
if(src[j-1]>temp)
{
src[j]=src[j-1];
}else//如果当前的数,不小前面的数,那就说明不小于前面所有的数,
//因为前面已经是排好了序的,所以直接通出当前一轮的比较
break;
}
src[j]=temp;
printResult(i,src);
}
发表评论
-
什么是线程安全
2011-11-28 17:57 1084什么是线程安全? ... -
java中的hashcode
2011-11-28 11:03 892Java中有两类集合(Collection),一类是List, ... -
任意10进制的数,然后打印其2进制形式的时候里面包含多少个1
2011-11-15 15:36 1157具体做法有两种: 方法一: public class A{ ... -
交换两个数不使用第三方变量
2011-11-15 14:04 1467题目很简单:------------------------- ... -
Java 冒泡排序
2011-11-15 11:05 1112冒泡的思想精髓就是数组中相临的两个数依次相比较,如果左边的数小 ... -
Java中的快速排序
2011-11-14 16:50 999快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将 ... -
Java运行时异常与普通异常的区别
2011-11-09 11:22 1613Throwable是所有Java程序中错误处理的父类,有两种资 ... -
Servlet生命周期与工作原理
2011-11-09 09:13 1076Servlet生命周期分为三个阶段: 1,初始化阶段 ... -
java 单例模式的好处
2011-11-08 17:59 1329java 单例模式的好处 ... -
JAVA工厂模式
2011-11-08 17:29 10641. 简单工厂模式 publci clas ... -
sleep和wait的区别
2011-11-14 16:45 11201、这两个方法来自不同的类分别是,sleep来自Thread类 ... -
String、StringBuffer与StringBuilder之间区别
2011-11-04 21:10 885最近学习到StringBuffer,心中有好些疑问,搜索了一些 ... -
HashMap和Hashtable的区别
2011-10-14 17:53 14711 HashMap不是线程安全的 ... -
遍历HashMap的两种方法及效率
2011-10-14 17:33 4941第一种: Map map = new HashMap(); I ... -
什么是@SuppressWarnings("unchecked")
2010-10-15 10:29 1391@SuppressWarnings 批注允许您 ... -
图片压缩程序实例
2010-08-05 10:08 1294项目中要使用到图片压缩程序,在网上找了一个稍加修改就可以使用了 ... -
java replaceall 用法
2010-06-10 17:09 2189public class TryDotRegEx { publ ... -
修改jar文件中的配置文件
2010-04-13 10:52 3354可以使用两种方法对jar文件进行修改: 1.使用winRAR ... -
重定向请求的两种方式
2009-12-31 14:20 13611.在程序中如何重定向请求呢? 答:重定向请求有两种方式:1 ... -
JVM工作原理
2009-11-30 15:49 10973Java虚拟机Java虚拟机(Ja ...
相关推荐
希尔排序,直接插入排序,折半插入排序算法的实现,c语言实现希尔排序
直接插入排序法~~~~~内部排序
java编写的插入排序算法
c语言基本插入排序法c语言基本插入排序法c语言基本插入排序法c语言基本插入排序法
插入排序算法c++实现,程序实现插入排序十万个数(调用)。可以改成输入。并附加了程序运行计时,用于测试时间复杂度,可以移除。绝对能用
Java语言实现的直接插入排序算法,代码里头有详细注释,注释皆为简单英文,因为这个算法比较简单,欢迎新手下载学习使用,欢迎后期的学习交流!
冒泡排序算法选择排序算法插入排序c语言实现
一段比较简便、易懂,且能运行的JAVA代码。运用的是插入排序法对10个数字进行排序。
使用C语言写的直接插入排序算法,简单易懂,希望对大家学习有帮助
插入排序算法(动态数组实现) printf("--------插入排序算法的实现--------\n"); printf("输入数组的大小length:\n"); int length=0; scanf("%d",&length); /****动态分配内存初始化数组*********************...
用c语言写得插入排序和折半插入排序,很简单的。 *****多多支持
数据结构中的插入排序算法,C++实现的,算法交流。。。
直接插入排序算法, 直接插入排序算法
使用插入排序算法对输入的n个整数,按照从小到大的顺序排序。 Input Description 第一行输入一个整数n(0)。 第二行输入n个整数。 Output Description 输出排序后的整数,每个整数之间以一个空格分隔。注意:最后...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
这一个原创C语言编写的数组大小排序法,包括插入法和冒泡法.通过学习它的思想,把握这两种基本的算法,达到举一反三的效果。
使用二分方法实现插入排序
完整的演示了直接插入排序算法的整个过程,包括整个程序代码的执行和对应的数字变化的过程