1.1。初期バージョン
1 空隙 bubble_sort_1(INT * ARR、int型の長さ){
2 INT I、J。
3 用(i = 0 ; iは<長さ、iは++ ){
4 用(J = 0 ; J <長-I- 1、J ++ ){
5 であれば(ARR [J]> [J + ARR 1 ])
6 STD: :スワップ(ARR [J]、ARR [J + 1 ])。
7 }
8 }
9 }
1.2は1を改良:特定のステップへのサイクルの間、私は、全体的には、注文されたサイクルの直接の終わりを発見した場合。
1つの 空隙(bubble_sort_2 INT []、int型N){
2 用(BOOL =ソート偽 ;ソート=ソート;!N-- ){
3 のための(int型 I = 1!; I = N; iが++ ){
4 であれば( [I - 1 ]> [I]){
5 のstd ::スワップ([I - 1 ]、[I])。
6は =ソート偽;
7 }
8 }
9 }
10 }
1.3改良2:各逆右端点(後半の点が指示された)記録、並べ替えは、ステップのうちのいくつかは、順序の並べ替えでは省略されているが、左側にその時点から実行することができます。
1 空隙(bubble_sort_3 INT []、int型N){
2 INT最後= 0 。
3 INT a_border = N。
4 のための(BOOLソート= 偽 ;ソート=ソート; a_border--!){
5 ため(int型 I = 1 ; I = a_border; iは++!){
6 場合を([I - 1 ]> [I]){
7 のstd ::スワップ([I - 1 ]、[I])。
8 ソート=偽;
9 最後= I;
10 }
11 }
12 a_border = 最後;
13 }
14 }