999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

簡單選擇排序算法的改進及分析

2009-09-26 09:37:42張憶文
新媒體研究 2009年18期
關鍵詞:分析

張憶文 譚 霽

[摘要]排序是計算機程序設計的重要操作,經典的排序包括:冒泡排序、選擇排序、插入排序等等;以簡單選擇排序算法為基礎,對其進行改進,通過分析得出與之具有同樣行之有效、甚至更高的排序效率。

[關鍵詞]簡單選擇排序 改進算法 分析

中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0920077-01

排序是將數據元素的任一序列,重新排列成一個關鍵字有序的序列。基于比較和移動的排序算法具有通用性,包括插入排序、選擇排序、交換排序、歸并排序、計數排序[1]。各種排序的算法各具有優缺點,但就其全面性能而言,很難提出一種被公認的最好的方法。評價算法主要考慮其時間復雜度、空間復雜度、穩定性等。筆者通過對簡單選擇排序算法進行改進,使其交換或移動的次數減少,從而提高效率。

一、簡單選擇排序[2]

簡單選擇排序的基本思想:對待排序的序列進行若干趟處理,通過n-i次關鍵字的比較,從n-i+1個記錄中選出關鍵字最小的記錄和第i(1≤i≤n)個記錄進行交換,這樣一趟處理就能確定一個數的位置,對n個數如果確定n-1個數的位置,則這n個數就排序成功。

(一)主要代碼片段

for(i=0;i

{for(j=i+1;j

if(a[i]>a[j])

{t=a[i];a[i]=a[j];a[j]=t;}}

(二)算法分析

時間復雜度:簡單選擇排序過程中,當待排序序列為正序時,移動的次數最少為0次;當為逆序時最大為3n(n-1)/2;然而無論記錄是否有序所需比較的次數都為n(n-1)/2;所以時間復雜度為O(n2)。

二、改進算法一

簡單選擇排序在每趟中都選一個最小的關鍵字確定其正確的位置,上述算法只要相鄰元素逆序就要交換(移動);可以附設一個變量記錄其最小值,然后在與最小值交換,這樣可以大大的減少移動的次數。

(一)主要代碼片段

for(i=0;i

{k=i;

for(j=i+1;j

if(a[i]>a[j])

k=j;

if(k!=i)

{t=a[i];a[i]=a[j];a[j]=t;}}

(二)算法分析

時間復雜度:當待排序序列為正序時,移動的次數最少為0次;當為逆序時最大為3(n-1),這比3n(n-1)/2大大的減少;比較的次數為n(n-1)/2;所以時間復雜度為O(n2)。

三、改進算法二

簡單的選擇排序在一趟排序的過程只能確定一個元素的正確位置,現改進為在一趟的排序過程中確定兩個元素的位置,即一個最大值和一個最小值。對一個待排序序列應比較第一個元素和最后一個元素的值,若逆序就交換,這樣可以保證第一個元素比最后一個元素小;將2到n-1個元素依次同第一個元素比較;若逆序則交換;否則和最后一個元素比較若逆序則交換;這樣在一趟排序過程中就確定兩個元素的位置;對剩余的n-2個元素,重復上述過程直至全部有序[3]。

(一)主要代碼片段

for(i=1;i<=n/2;i++)

{if(a[i-1]>a[n-i])

{t=a[i-1];a[i-1]=a[n-i];a[n-i]=t;}

for(j=i;j

if(a[i-1]>a[j])

{ t=a[i-1];a[i-1]=a[j];a[j]=t;}

else if(a[j]>a[n-i])

{t=a[j];a[j]=a[n-i];a[n-i]=t;}}

(二)算法分析

時間復雜度:當待排序序列為正序時,移動的次數最少為0次;最壞時所需的移動次數為n-1,大大的低于簡單選擇排序的3n(n-1)/2;從比較次數來看,循環的次數減少一半,所以比較的次數為n(n-1)/4相對與簡單選擇排序也有所降低。 所以時間復雜度為O(n2)。

四、改進算法三

利用分治法的思想將第一個數和最后一個數比較若逆序,則交換;第二個數和倒數第二個數比較若逆序,則交換;直至第i個數和第i個數比較;將待排序序列分成兩部分,將小者放在前半部分,大的放在后半部分,然后再在前半部分選出最小值;后半部分選出最大值;對剩余的n-2個數做同樣的處理,直至全部有序。

(一)主要代碼片段

for(i=0,j=n-1;i<=j;i++,j--)

{while(i

if(a[i]>a[j])

{t=a[i];a[i-]=a[j];a[j]=t;i++;j--}

k=i-1;static m=0;static l=n-1;

for(t=m;t

if(a[t]>a[t+1])

{ r=a[t];a[t]=a[t+1];a[t+1]=r;}

for(t=k;t

if(a[t]>a[t+1])

{r=a[t];a[t]=a[t+1];a[t+1]=r;}

m++;l--;}

(二)算法分析

第一趟在n個元素的序列比較n/2(n為偶數)次或為(n+1)/2次(n為奇數);為討論方便取n為偶數;在前半部分選出最小值要比較n/2-1次;后半部分選出最大值需要比較n/2-1次;所以在一趟排序確定兩個元素的正確位置要3n/2-2次。在剩余的n-2個元素中確定兩個元素的正確位置需要3(n-2)/2-2次;以此類推可知最后一趟剩余的兩個元素的比較次數為1次;所以總的比較次數為3n(n-2)/8;這比簡單選擇排序也有所降低。當待排序序列為正序時,移動的次數最少為0次;最壞時所需的移動次數為9n(n-2)/8比簡單選擇排序也有所降低。

五、各種排序的比較

六、結束語

各種改進方法的思想和簡單的選擇排序基本一致;都是在簡單選擇排序的基礎上加以改進;使之成為一種更簡單,效率更高的算法。

參考文獻:

[1]嚴蔚敏等,數據結構(C語言版)[M].北京:清華大學出版社,2005.7.

[2]潭浩強,C程序設計[M].北京:清華清華大學出版社,1999.4.

[3]何洪英,雙向選擇排序算法的實現及性能研究,成功(教育),2007.9.

作者簡介:

張憶文,男,本科生,長江師范學院數學與應用數學專業;譚霽,男,本科生,長江師范學院數學與應用數學專業。

猜你喜歡
分析
禽大腸桿菌病的分析、診斷和防治
隱蔽失效適航要求符合性驗證分析
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統及其自動化發展趨勢分析
經濟危機下的均衡與非均衡分析
對計劃生育必要性以及其貫徹實施的分析
現代農業(2016年5期)2016-02-28 18:42:46
GB/T 7714-2015 與GB/T 7714-2005對比分析
出版與印刷(2016年3期)2016-02-02 01:20:11
中西醫結合治療抑郁癥100例分析
偽造有價證券罪立法比較分析
在線教育與MOOC的比較分析
主站蜘蛛池模板: a网站在线观看| av大片在线无码免费| 国产日韩欧美中文| 亚洲一区二区三区中文字幕5566| 欧美不卡视频一区发布| 一级不卡毛片| 亚洲日韩精品伊甸| 国产乱子精品一区二区在线观看| 亚洲日韩图片专区第1页| 成人在线观看不卡| AV老司机AV天堂| 亚洲成aⅴ人片在线影院八| 国产真实乱了在线播放| 日本一区高清| 国产亚洲欧美在线视频| 国模极品一区二区三区| 国产区精品高清在线观看| 欧美影院久久| 成年片色大黄全免费网站久久| 秋霞午夜国产精品成人片| 免费全部高H视频无码无遮掩| 亚洲欧洲日韩综合色天使| 国产97视频在线| 亚洲人成色77777在线观看| 精品无码日韩国产不卡av| 福利在线免费视频| 91久久青青草原精品国产| 片在线无码观看| 国产美女91视频| 国产福利一区视频| 亚洲人成高清| 欧美自慰一级看片免费| 天天综合网色| 国产精品视频3p| 日本高清有码人妻| 91热爆在线| 色综合中文综合网| 97av视频在线观看| 免费99精品国产自在现线| 亚洲欧美另类色图| 日韩国产精品无码一区二区三区| 亚洲成人网在线观看| 国产视频欧美| www.91中文字幕| 在线亚洲小视频| 天天做天天爱天天爽综合区| 国产99视频精品免费观看9e| 看你懂的巨臀中文字幕一区二区| 亚洲码一区二区三区| 人人看人人鲁狠狠高清| 久久国产拍爱| 国产丝袜91| 欧美a在线看| 人人91人人澡人人妻人人爽| 国产av一码二码三码无码| 亚洲色无码专线精品观看| 久久久久久久久18禁秘| 国产乱人视频免费观看| 中文字幕在线看视频一区二区三区| 制服丝袜在线视频香蕉| 91 九色视频丝袜| 亚洲大尺度在线| 国产乱人免费视频| 久久精品aⅴ无码中文字幕| 国产成人综合亚洲欧洲色就色| 久久国产精品无码hdav| 在线a网站| 在线看片中文字幕| 亚洲天堂网在线视频| 手机精品福利在线观看| 中文字幕资源站| 激情午夜婷婷| 久久精品无码专区免费| 超薄丝袜足j国产在线视频| 日韩毛片免费| 国产精品亚洲专区一区| 在线亚洲精品自拍| a亚洲视频| 2024av在线无码中文最新| 四虎国产精品永久一区| 欧洲在线免费视频| 91午夜福利在线观看|