c语言数据交换的算法流程图,C语言冒泡排序算法浅析
C語言泡排冒序算淺析
法中劉旭 (
江師范麗等專高學科校數與計算機學科學系 )
【
摘】要泡冒排序算法 C語言常見是排序算法之,一該算法的優點
邏輯是清晰,代碼簡潔,點缺是時復雜度間高較本文介。紹了統傳
0
。每一輪較結束后比,如標果識量變的值為 l,則說明有發沒生
數據換交,排序已完經成,不用繼續再比較;如果標變量識的為值0,
冒泡排序算
法的基思本想,并算對的改法進行分進析,已降該低
法算的時間復雜度。
說則排明可序未能成,完需進還下一行的比較輪改進后的。算如法下
: u i。d b ub b l P
一
5rI
—。
be tt e r (in t a[】。i n t n)I I為數na組元的素個數
【
鍵關字】 c語言,法,冒算排泡
序 1.引言
’
f
0r i(咄 i (n -1 i;+ .】
Fla=1g/;/置標識設變薰并賦值為1 F
o (r j= 0;< j一 n1一i;j+ ’){
在
c語言的習學中,學習完程在設計序結以后,構就會遇到 于排序關的問題。常見的排序算有法冒泡序排選、排序擇、插入排序、快排速和歸序排序并等排序法算本文。主要對統傳冒的排序泡法算的算邏輯法和算法實現等進分析,對行傳統法算不中必要的循環進行了進改,一在程度定減了算少法循的環次數數據和交換次 ,數從而降了算法的低間時雜度復。 2傳.統的冒排序泡算法
i F([ a】> j【aj + l】 )
{
F l a g=日;,,在數據變存,標換變量識賦值日
為te pI; a j【】; a【 1 j a【 j+ 1 】 a【 J+ 1;】 tem p:
}
“} l a g= =
;1
’; 藁榘裾雜魯 藜譬數 交據換排,序已完成
泡排冒序法算對兩相個的數鄰進行比較,小較的數“浮”上較, 3 . 每2一輪比較找到當前最大的數,時同時 找當到前的最小大的數“下沉”,對參 比較加的 兩相個鄰的數據而言, 果如前一個 數比數后一個大,則數交換這個兩;數則不用否換交對每一對。相的鄰以的兩上個算法中,在 一每輪相的鄰兩數比較 時,都是 第從一兩個數進行完次比一后較,最后一個的就數是最的大數,接下來對相對鄰數兩
中找到較大數,每輪比一較找到只當前比范圍的較最除去最一后個數其的他數再次進每一行對相鄰的兩數個的較比,數。如大果同能時找當前到較比圍范的最數,小率可效以高提一最的后數是第便二的大數如果有。n個元素數組的[ a]:n ,倍循環數也可次以大幅減,少相于當在同輪的比較中一,到找一 第一輪逐,個比較 ( [ a1],a[ 2 )], ( [a2] , a[3] ),( a[3], a[ 4] , )個最大‘下沉 到最”后,同時 到找一個最小“數浮上”到最前面。具( a[n— i] a, n] )[最:大 元的素被會移動到 aI ] n上第二。,輪逐體法為:方在找到當輪前比較的大數最后,在進行下一比輪較之個比 ( a較[1] a,[ 2]) ( a,[ 2],a []3), ( a[ 3], a[ 4 )],…,… (a [ n 2], a前從當,輪排前序圍范最的后一對鄰相的兩開始數行相進鄰數兩[n一 1] );第二大元素會被移到動 a[ n— i] 上以此類,推 ,經過n —I輪的較,比將每次比較結中的果較數小向存前,放直到把最小數把
…交
…
,
比后,較這個n數序排功成。法算碼代如下:v
o i d ub b lb e
—
換到第一個位
置原理,和到最大找數存放到最一樣后然后根據,標 識變量值判斷的是否始開進行下一輪的比較。改進后的法如算下:
ouid bu bbl e
—s
o rt i ( tn a 1 . i n t n l) l n示表教a組的元個數黌
i - O; i
s
0
—
b e t ter ( i n t a[ 】,i n t n //)n為數組 a的元個數
{素
{
F o r( i=:0 i
F
o r (
{
,
,每—輪 b鞍前n一E1 - i個 p胡邑}痔好的最i后個不E用 較
FO (r
{ {
fD r g ( j =。 0;; j n駕一( 1要 1一考; j” )莠/ 蕷, 從第堡一對始開比始較, 到最拭大值
{
J
-o; j
i F(a[ 1ja>【J 1+ l】{
i
f ( a[J>】a J[+ l 1 't
e mp-£ j】; af j 1 [ aJ *lk
F la;g; 0//存在據數換變標,變量賦識為值 0
t me p a【 j】; a j【】= a【j 1】+ a【;j’ 1】一 t em p;
'
k n=一1- i:
a( J+ l l- t e砷
};’ ’
Fi( a[ k] a
{
小l F a=g0;
}
3算.的法改進 3 . 若排1序提前完 成,減少不必要的循環上述法中算若數,包含組個元n,素那么必須進 n行一 1輪比 。在較多情數況下, n個對數進行序排,并一定要進不行n l~輪
}比
t em=pa k】【; a【 k Ia £k 1一】: a【 一k 1】;te m p;
' '
“l a g=  ̄l
;
’;;蓁顰器 備棠譬湊 數據交換排序已莞 成
)
較
。例對如5 8 9 1 23這個六數行排序,進只需進行要3輪比較就可以排序功成,而需不進行 5要比輪較。說這在明第 n-1輪比較經上過述進,改算在法每一輪較的效比上提率高一倍了但。值前,就有可能完成排,因序,此可對以上算述法進改進。改進行突的注得意的,是改的主要進果是效少減了環循次數,對于據數換次破點交在果排如序在第~nl輪比前較經已完成,則再不進行續后比數而言 并,有減沒少。較,可減少 循環次數。具體方法是:設 一置個量變來標識 前輪當的 結束 4語
比是否存較在據數交的換情況,如存果數據在交,則說換明序可排傳統冒的泡序算法代碼簡排潔,能穩性定,通上述過的進改, 能仍完未成,本輪比較結后繼續束下一輪比較, 果如存在數不交據可減以少循環次的數提,高算法的效率 但,總體言其而時間復度雜換,則說明當前輪較時比,排 已序完經成,不用再繼續進行后續的 仍較然高為 n2,冒泡排序法適算用于規較模小排序的。 較。比在每輪一比較開時,始給識標量賦值變為 1,然后在每輪一的 考參獻文: 兩相鄰兩的數較時,比果如在存數據交,換則將標識變量的值改為[ 1]蔚敏嚴數.據構[結M] .清華大學出社,版19 9 7, 4
總結
以上是生活随笔為你收集整理的c语言数据交换的算法流程图,C语言冒泡排序算法浅析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab m文件的编写,Matlab
- 下一篇: Maven学习(一)————Maven技