優化策略一
對應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...