氣泡排序及其優化

2021-09-06 15:53:27 字數 1768 閱讀 6183

優化策略一

對應bublesort1

如果這一次比較沒有發生交換就說明陣列有序,就break

優化策略二

對應bublesort2

如果比較到某個位置之後沒有發生交換,說明這個位置以後的排列是有序的,下次比較從第乙個到這個位置即可。

優化策略三

對應bublesort3

雙向比較,又名雞尾酒排序。

#include

using

namespace std;

template

<

class

t>

intgetarraylen

(t& a)

void

exchange

(int arr,

int i,

int j,

int length)

int temp;

temp = arr[i]

; arr[i]

= arr[j]

; arr[j]

= temp;

}// 氣泡排序

int*

bubblesort

(int arr,

int length)}}

return arr;

}int

*bubblesort1

(int arr,

int length)}if

(isordered ==

true

)break;}

return arr;

}int

*bubblesort2

(int arr,

int length)}if

(isordered ==

true

)break

; k = pos;

}return arr;

}int

*bubblesort3

(int arr,

int length)

} k = pos;

if(isordered ==

true

)break

;for

(int j = pos; j > n; j--)}

n++;if

(isordered ==

true

)break;}

return arr;

}void

display

(int arr,

int length)

cout << endl;

}int

main()

;int arr2=

;int arr3=

;int len1 =

getarraylen

(arr1)

;int len2 =

getarraylen

(arr2)

;bubblesort2

(arr1,len1)

;//bubblesort(arr3, len2);

bubblesort3

(arr2,len2)

;display

(arr1,len1)

;display

(arr2,len2)

;system

("pause");

return0;

}

氣泡排序及其優化

然則 2015年12月30日發布 氣泡排序是比較簡單的,其排序步驟就是比較相鄰元素並將較大的往後移。每掃瞄一輪,將確定乙個元素的位置。實現如下 void sort int a 對氣泡排序的優化主要是減少交換次數。如果一次掃瞄中元素沒有發生交換,那麼排序就可以結束了。為此可設定一標誌量flag,預設為...

氣泡排序及其優化

課程名稱 資料結構 實驗專案名稱 排序演算法的實現與比較 實驗目的 1 掌握優化氣泡排序的演算法 實驗要求 1 對於輸入的任意乙個整型資料序列,將其進行氣泡排序,要求該氣泡排序的演算法為優化之後的演算法,即 a.設定flag變數,當一趟排序結束後flag的值未更新,剛說明序列已經有序,停止排序 b....

氣泡排序及其優化

bubble sort比較簡單,本文首先列出了基礎版本bubble sort的偽 之後做兩點小的優化。1.基礎版本bubblesort 原始版的bubblesort 時間複雜度為o n 2 function bubblesort array x,int length for int i 0 i le...