﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-my java space</title><link>http://www.blogjava.net/yinzhao0509/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 09:59:05 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 09:59:05 GMT</pubDate><ttl>60</ttl><item><title>直接插入排序、折半插入排序和起泡排序算法的java实现</title><link>http://www.blogjava.net/yinzhao0509/archive/2008/11/08/239438.html</link><dc:creator>zhao yongwang</dc:creator><author>zhao yongwang</author><pubDate>Sat, 08 Nov 2008 10:51:00 GMT</pubDate><guid>http://www.blogjava.net/yinzhao0509/archive/2008/11/08/239438.html</guid><wfw:comment>http://www.blogjava.net/yinzhao0509/comments/239438.html</wfw:comment><comments>http://www.blogjava.net/yinzhao0509/archive/2008/11/08/239438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yinzhao0509/comments/commentRss/239438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yinzhao0509/services/trackbacks/239438.html</trackback:ping><description><![CDATA[<p>package net.yinzhao.code;</p>
<p>public class Sort {<br />
&nbsp;<br />
&nbsp;/**<br />
&nbsp; * 插入排序的基本思想为：首先寻找一个有序数列，然后将数组中的每个元素插入到该有序序列中，<br />
&nbsp; * 则该数组序列即可变为有序数列。具体实施办法为，首选将第一个元素看作是一个有序序列，然后<br />
&nbsp; * 从第二个元素开始遍历数组，将每个元素插入到从第一个元素到前一个元素的有序序列中，即可完<br />
&nbsp; * 成排序。<br />
&nbsp; * @param temp<br />
&nbsp; */<br />
&nbsp;/*<br />
&nbsp;public static void insertSort(int[] temp)<br />
&nbsp;{<br />
&nbsp;&nbsp;int length = temp.length;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;for (int i = 1; i &lt; length; i++) // 把第一个元素看作一个有序序列，从第二个元素开始遍历<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;int tempNo = temp[i];<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;for (int j = 0; j &lt; i; j++)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (tempNo &lt; temp[j])<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int k = i; k &gt; j; k--) // 将其遍历数和比较数之间的数依次向后移动一位<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp[k] = temp[k-1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp[j] = tempNo;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
&nbsp;*/<br />
&nbsp;<br />
&nbsp;/**<br />
&nbsp; * javaeye上看到的另外一种写法，不同之处是其与前边数字一个一个比较，然后一次一次逐渐移动。<br />
&nbsp; */<br />
&nbsp;/*<br />
&nbsp;public static void insertSort(int[] a)&nbsp; <br />
&nbsp;&nbsp;&nbsp; {&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 1; i &lt; a.length; i++)&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int temp = a[i];&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j = i - 1;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (j &gt;= 0 &amp;&amp; temp &lt; a[j])&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[j+1] = a[j];&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j--;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[j+1] = temp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; */<br />
&nbsp;<br />
&nbsp;/**<br />
&nbsp; * 数据结构书上原版算法的java代码实现<br />
&nbsp; */<br />
&nbsp;public static void insertSort(int[] temp)<br />
&nbsp;{<br />
&nbsp;&nbsp;int j = 0;<br />
&nbsp;&nbsp;int length = temp.length;<br />
&nbsp;&nbsp;int[] a = new int[length+1];<br />
&nbsp;&nbsp;System.arraycopy(temp, 0, a, 1, length);<br />
&nbsp;&nbsp;for(int i = 2; i &lt; a.length; i++)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(a[i] &lt; a[i-1])<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;a[0] = a[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;a[i] = a[i-1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;for (j = i - 2; a[i] &lt; a[i-1]; j--)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[j+1] = a[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;a[j+1] = a[0];<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;for (int i = 1; i &lt; a.length; i++)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;System.out.println(a[i]);<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;/**<br />
&nbsp; * 折半插入排序算法的java实现<br />
&nbsp; * @param temp<br />
&nbsp; */<br />
&nbsp;public static void bInsertSort(int[] temp)<br />
&nbsp;{<br />
&nbsp;&nbsp;int length = temp.length;<br />
&nbsp;&nbsp;for (int i = 1; i &lt; length; i++)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;int tempVal = temp[i];<br />
&nbsp;&nbsp;&nbsp;int low = 0;<br />
&nbsp;&nbsp;&nbsp;int high = i - 1;<br />
&nbsp;&nbsp;&nbsp;while (low &lt;= high)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;int middle = (low + high) / 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (tempVal &lt; temp[middle])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high = middle - 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low = middle + 1;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;for (int j = i; j &gt; high + 1; j--)<br />
&nbsp;&nbsp;&nbsp;&nbsp;temp[j] = temp[j-1];<br />
&nbsp;&nbsp;&nbsp;temp[high+1] = tempVal;<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public static void buddleSort(int[] temp)<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; temp.length - 1; i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for (int j = i + 1; j &lt; temp.length; j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;if (temp[i] &gt; temp[j])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;int tempVal = temp[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;temp[i] = temp[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;temp[j] = tempVal;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;public static void main(String[] args)<br />
&nbsp;{<br />
&nbsp;&nbsp;int a[] = {113, 3, 24, 24, 78, 96};<br />
&nbsp;&nbsp;Sort.bInsertSort(a);<br />
&nbsp;&nbsp;//Sort.insertSort(a);<br />
&nbsp;&nbsp;//Sort.buddleSort(a);<br />
&nbsp;&nbsp;for (int i = 0; i &lt; a.length; i++)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;System.out.println(a[i]);<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>}</p>
<img src ="http://www.blogjava.net/yinzhao0509/aggbug/239438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yinzhao0509/" target="_blank">zhao yongwang</a> 2008-11-08 18:51 <a href="http://www.blogjava.net/yinzhao0509/archive/2008/11/08/239438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>