Javaの配列のバブルソート、バブルソートの最適化
11422 ワード
泡のソート:
並べ替えや選択を挿入して並べ替えもやり直しましょう
:
int[] arr={3,4,2,6,1};
1. , [0] , 。 [0] [1] ,[1] [2] ,[2] [3] ……
if(arr[0]arr[2]){
//
int temp=arr[1];
arr[1]=arr[2];
arr[2]=arr[temp];
}
n(5) arr , , n-1(4) ; {3,2,4,1,6},
;
2. ( i , [i]=1):
, , 。
{2,3,1,4,6}, n-1-i(3)
......
コード:
public static void main(String[] args) {
int[] arr={3,4,2,6,1};
System.out.println(" :"+ Arrays.toString(arr));
for (int i = 0; i < arr.length-1; i++) { // , n-1
for (int j = 0; j <arr.length-1-i; j++) {// , i n-i-i
if(arr[j]>arr[j+1]) {
//
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println(" :"+ Arrays.toString(arr));
}
泡ソートの利点: : , , 。
, 。
:O(n²) tip: ,
バブルソート法の不足と改善方法: , , , ,
, , flag, 0,
, flag 0, , flag 0。
, , 0, , ;
https://www.cnblogs.com/xiaoming0601/p/5866048.html 0.0
バブルソート最適化
int[] arr={3,4,5,6,7};
System.out.println(" :"+ Arrays.toString(arr));
boolean flag=false; // , flag ,
for (int i = 0; i < arr.length-1; i++) { // , n-1
for (int j = 0; j <arr.length-1-i; j++) {// , i n-i-1
if(arr[j]>arr[j+1]) {
//
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag=true;
}
}
//
if(!flag){
break;// , ,flag false, ,
}
}
System.out.println(" :"+ Arrays.toString(arr));
-------------------------------------------------------------------------------------------------------------並べ替えや選択を挿入して並べ替えもやり直しましょう