?? c語言常用的三種排序方法總結與探討.htm
字號:
<P align=center>9</P>
<P align=center> </P></TD>
<TD>
<P align=center>1次</P></TD>
<TD>
<P align=center>2次</P></TD>
<TD>
<P align=center>3次</P></TD>
<TD>
<P align=center>4次</P></TD>
<TD>
<P align=center>1次</P></TD>
<TD>
<P align=center>2次</P></TD>
<TD>
<P align=center>3次</P></TD>
<TD>
<P align=center>1 次</P></TD>
<TD>
<P align=center>2次</P></TD>
<TD>
<P align=center>1次</P></TD></TR>
<TR>
<TD>
<P align=center>7</P>
<P align=center>5</P>
<P align=center>8</P>
<P align=center>6</P>
<P align=center>9</P></TD>
<TD>
<P align=center>8</P>
<P align=center>5</P>
<P align=center>7</P>
<P align=center>6</P>
<P align=center>9</P></TD>
<TD>
<P align=center>8</P>
<P align=center>5</P>
<P align=center>7</P>
<P align=center>6</P>
<P align=center>9</P></TD>
<TD>
<P align=center>9</P>
<P align=center>5</P>
<P align=center>7</P>
<P align=center>6</P>
<P align=center>8</P></TD>
<TD width=41 30.75pt; WIDTH:>
<P align=center>9</P>
<P align=center>7</P>
<P align=center>5</P>
<P align=center>6</P>
<P align=center>8</P></TD>
<TD>
<P align=center>9</P>
<P align=center>7</P>
<P align=center>5</P>
<P align=center>6</P>
<P align=center>8</P></TD>
<TD>
<P align=center>9</P>
<P align=center>8</P>
<P align=center>5</P>
<P align=center>6</P>
<P align=center>7</P></TD>
<TD>
<P align=center>9</P>
<P align=center>8</P>
<P align=center>6</P>
<P align=center>5</P>
<P align=center>7</P></TD>
<TD>
<P align=center>9</P>
<P align=center>8</P>
<P align=center>7</P>
<P align=center>6</P>
<P align=center>5</P></TD>
<TD>
<P align=center>9</P>
<P align=center>8</P>
<P align=center>7</P>
<P align=center>6</P>
<P align=center>5</P></TD></TR>
<TR>
<TD>
<P align=center> </P></TD>
<TD width=168 colSpan=4 WIDTH: 125.8pt;>
<P align=center>最大的數9找到,其余4個數找次大數</P></TD>
<TD width=123 colSpan=3>
<P align=center>次大數8找到,其余3個數找</P></TD>
<TD width=108 colSpan=2>
<P align=center>7找到,其余2個數找</P></TD>
<TD width=109>
<P align=center>最后兩個數一次比較</P></TD></TR></TBODY></TABLE>
<P>選擇排序較冒泡容易理解,程序編寫也要相對容易一些。</P>
<P>for(i=0;i<10;i++)</P>
<P>for(j=i+1;j<10;j++)</P>
<P> if(a[i]<a[j])</P>
<P> {t=a[i];a[i]=a[j];a[j]=t;}</P>
<P>對于選擇排序,我們也可以看到一個問題,如第一輪排序中,我們要找的是9才是最大值,所以其它的交換完全沒有必要進行,其它各輪都存在這樣的情況,所以我們可以想辦法取消這種情況,也就是說我們真正找到的最大值的位置后再進行交換。</P>
<P>for(i=0;i<10;i++)</P>
<P>{ p=i;</P>
<P>for(j=i+1;j<10;j++)</P>
<P> if(a[p]<a[j])</P>
<P> p=j;</P>
<P> if(p!=i)</P>
<P>{t=a[i];a[i]=a[j];a[j]=t;}</P>
<P>}</P>
<P>這樣算法經過改進以后就較好地解決了這個問題。</P>
<P>三、插入排序</P>
<P>1、插入排序基本思想:(假定從大到小排序)依次從后面拿一個數和前面已經排好序的數進行比較,比較的過程是從已經排好序的數中最后一個數開始比較,如果比這個數,繼續往前面比較,直到找到比它大的數,然后就放在它的后面,如果一直沒有找到,肯定這個數已經比較到了第一個數,那就放到第一個數的前面。</P>
<P>那么一般情況下,對于采用插入排序法去排序的一組數,可以先選 取第一個數做為已經排好序的一組數。然后把第二個放到正確位置</P>
<P>2、程序的編寫如下:</P>
<P>for(i=1;i<10;i++)//i從0開始或者1開始都可以。其它不變。</P>
<P>for(j=i;j>0;j--)</P>
<P> if(a[j]<a[j-1])</P>
<P> {t=a[j];a[j]=a[j-1];a[j-1]=t;}</P>
<P>對于這個程序也有需要修該的地方,以上程序的排序實際上也是基于交換思想進行排序,也可以進行真正意義上的排序,即:先把待排序的數取出來,然后找出應該插入的位置,找到后,將待插入位置后的數據統統后移,原待排數據已經取出放于臨時變量中。然后把這個數據插入到正確的空余位置就可以了。</P>
<P>那么對于基于交換的插入排序,沒有找到位置之前,也進行了交換,所以我們也可以進行程序的改進。那么此程序的改進,肯定不能進行減少交換次數,因為我們知道如果到找到位置再進行交換,那么肯定已經找亂了原來的排序結果,所以只能是找位置,騰位置、放元素這幾道手續。</P>
<P>main()</P>
<P>{</P>
<P>int i,j,t,a[]={12,11,2,3,6,67,89,0,1,3};</P>
<P> for(i=1;i<10;i++)</P>
<P> {t=a[i];</P>
<P>j=i-1;</P>
<P>while(j>=0&&t>a[i])</P>
<P> {a[j+1]=a[j];</P>
<P> j--;</P>
<P>}</P>
<P> a[j+1]=t; </P>
<P> for(i=0;i<10;i++)</P>
<P> printf("%d ",a[i]);</P>
<P> printf("\n");</P>
<P>}</P>
<P> 以上是對幾種排序方法進行了探討,關于排序問題,是程序設計中的一項非常重要的內容,所以在《數據結構與算法》中作為一項重要的內容做了深入的講解,我們這在這里只做簡單的探討,以備C語言的初學者或正在學習C語言編程的愛好者使用。
</P><BR></DIV>
<DIV class=Message id=Message></DIV></TD>
<DIV></DIV>
<DIV class=Message id=Message></DIV>
<SCRIPT src="C語言常用的三種排序方法總結與探討.files/zzxyArticle.js"
type=text/javascript></SCRIPT>
</TD></TR>
<TR>
<TD align=middle>
<DIV align=left><SPAN id=ContentAd2>
<SCRIPT src="C語言常用的三種排序方法總結與探討.files/zzxyArticle.js"
type=text/javascript></SCRIPT>
</SPAN></DIV></TD></TR>
<TR>
<TD align=middle>
<DIV align=left><SPAN id=ContentAd2><FONT
color=#ffffff>歡迎你訪問:一起要發發(www.e7188.com)</FONT></SPAN></DIV></TD></TR>
<TR>
<TD
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
align=right bgColor=#f7f7f7 height=25>[ <SPAN
id=ArticleHits>數據載入中...</SPAN> ] [<A
href="javascript:history.go(-1)">返回上一頁</A>] [<A
href="javascript:window.print()">打 印</A>]</TD></TR>
<TR>
<TD
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
<DIV>上一篇文章:<A
href="http://www.e7188.com/Article/program/279/714/2007/2007020941391.html">關于全排列算法</A></DIV>
<DIV>下一篇文章:<A
href="http://www.e7188.com/Article/program/279/714/2007/2007020941393.html">雙向鏈表的排序</A></DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD class=titlebg1>∷相關文章評論∷ ?。ㄔu論內容只代表網友觀點,與本站立場無關?。?[<A
href="http://www.e7188.com/Article/comment.asp?ArticleID=41392"
target=_blank>更多評論</A>...]</TD></TR>
<TR vAlign=top>
<TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- 頁面底部開始 -->
<TABLE class=tableborder cellSpacing=0 cellPadding=0 width=764 align=center
border=0>
<TBODY>
<TR>
<TD class=buttomline align=middle colSpan=2><IFRAME id=frameButtom
marginWidth=0 marginHeight=0 src="C語言常用的三種排序方法總結與探討.files/ad1.htm"
frameBorder=0 noResize width=0 scrolling=no height=0></IFRAME></TD></TR>
<TR>
<TD class=buttombg1 id=buttomfont align=middle width="75%" height=65><A
class=navmenu href="http://www.e7188.com/support/about.asp">關于本站</A> - <A
class=navmenu href="http://www.e7188.com/support/help.asp">網站幫助</A> - <A
class=navmenu href="http://www.e7188.com/support/advertise.asp">廣告合作</A> -
<A class=navmenu href="http://www.e7188.com/support/declare.asp">下載聲明</A>
- <A class=navmenu href="http://www.e7188.com/link/"
target=_blank>友情連接</A> - <A class=navmenu
href="http://www.e7188.com/support/sitemap.asp">網站地圖</A> <BR>Copyright ©
2006-2008 <A href="http://www.e7188.com/" target=_blank><FONT
face=Verdana, sans-serif Helvetica, Arial,><B>E7188<FONT
color=#cc0000>.Com</FONT></B></FONT></A>. All Rights Reserved .
-軟件,源碼,模板,殺毒,優化<BR><SPAN>聯系Email:e7188@126.com </SPAN><A
href="http://www.miibeian.gov.cn/"
target=_blank>湘ICP備06015394號</A> 建站時間:2007年2月10日
業務咨詢QQ:190565746 <BR><SPAN id=countid>
<SCRIPT src="C語言常用的三種排序方法總結與探討.files/count.js"></SCRIPT>
</SPAN></TD></TR>
<TR>
<TD class=buttombg2 colSpan=2 height=9></TD></TR></TBODY></TABLE><!-- 頁面底部結束 -->
<SCRIPT src="C語言常用的三種排序方法總結與探討.files/count.htm" type=text/javascript></SCRIPT>
<SCRIPT language=JavaScript src="C語言常用的三種排序方法總結與探討.files/Hits.htm"></SCRIPT>
</BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -