冒泡排序
int [ ] arr = { 5 ,2 ,3 ,1 } ;
for ( int i = 0 ; i < arr. length - 1 ; i++ ) {
for ( int j = 0 ; i < arr. length- i- 1 ; j++ ) {
if ( arr[ j] > arr[ j+ 1 ] ) {
int temp = arr[ i+ 1 ] ;
arr[ j+ 1 ] = arr[ i] ;
arr[ j] = temp;
}
}
}
system. out. println ( Arrays . toString ( arr) ) ;
选择排序
int [ ] arr = { 5 ,2 ,3 ,1 } ;
for ( int i = 0 ; i < arr. length - 1 ; i++ ) {
for ( int j = i + 1 ; i < arr. length; j++ ) {
if ( arr[ i] > arr[ j] ) {
int temp = arr[ i] ;
arr[ i] = arr[ j] ;
arr[ j] = temp;
}
}
}
system. out. println ( Arrays . toString ( arr) ) ;
简化代码,适用于当数组非常大时提高性能
int [ ] arr = { 5 ,1 ,3 ,2 } ; / /
for ( int i = 0 ; i < arr. length - 1 ; i++ ) {
int minIndex = i;
for ( int j = i + 1 ; j < arr. length; j++ ) {
if ( arr[ minIndex] > arr[ i] ) {
minIndex = j;
}
}
if ( i != minIndex) {
int temp = arr[ i] ;
arr[ i] = arr[ minIndex] ;
arr[ minIndex] = temp;
}
}
system. out. println ( Arrays . toString ( arr) ) ;
二分查找
public static void main ( String [ ] args) {
int [ ] arr = { 7 , 23 , 79 , 81 , 103 , 127 , 131 , 147 } ;
System . out. println ( binarySearch ( arr, 81 ) ) ;
System . out. println ( binarySearch ( arr, 166 ) ) ;
}
public static int binarySearch ( int [ ] arr, int data) {
int left = 0 ;
int right = arr. length- 1 ;
while ( left <= right) {
int middle = ( left + right) / 2 ;
if ( data < arr[ middle] ) {
right = middle - 1 ;
} else if ( data > arr[ middle] ) {
left = middle + 1 ;
} else {
return middle;
}
}
return - 1 ;
}