バブルソート---<漫画アルゴリズム>から


ソース:
漫画アルゴリズムP 107
第1版:
単純点
第2版:
ポイントflag IDが付けられており、交換が行われたかどうかを示しています
public static  void bubbleSort(int[] arr){
 	int temp=0;
	boolean flag = false;
	for (int i=0;iarr[j+1]){
				flag=true;
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
		if (!flag){
			break;
		}else {
			flag=false;  //  flag
		}
	}
 }

第三版:(高、実に高...)
[3,2,1,4,5,6,7,8]多くの元素は実は秩序がある.
キーは、ソートのたびに無秩序な境界の後にある要素を比較する必要がないため、秩序化領域の定義です.
public static  void bubbleSort(int[] arr){
        boolean flag = false;
        int lastExchange=0; //           
        int sort=arr.length-1;  //      ,         
        for (int i=0;i arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                    flag=true; //       ,     
                    lastExchange=j; //            
                }
            }
            System.out.println("sort: "+sort+"---lastEx:"+lastExchange);
            sort=lastExchange;
            if (!flag){
                break;
            }else {
                flag=false;
            }
            System.out.println(i+" "+ Arrays.toString(arr));
        }
    }

アップグレード版-カクテルソート
[2,3,4,5,6,7,8,1]小さい頃からソートされた要素1のみの位置が間違っていた
第1ラウンド:左から右へ
[2,3,4,5,6,7,1,8]1,8交換
第2ラウンド:右から左へ
第3ラウンド:左から右へ
 
利点:ソートされたラウンド数を減らす
短所:コード量が増加
適用シーン:ほとんどの要素が整列している場合