排序
插入排序
public class Demo01 {
public static void main ( String [ ] args) {
int [ ] arr = { 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 } ;
for ( int i = 0 ; i < arr. length - 1 ; i++ ) {
int temp = arr[ i + 1 ] ;
int index = i;
while ( index >= 0 && temp < arr[ index] ) {
arr[ index + 1 ] = arr[ index] ;
index-- ;
}
arr[ index + 1 ] = temp;
}
for ( int s : arr) {
System . out. print ( s + " " ) ;
}
}
}
选择排序
public class Demo02 {
public static void main ( String [ ] args) {
int [ ] arr = { 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 } ;
for ( int i = 0 ; i < arr. length - 1 ; i++ ) {
int min = arr[ i] ;
int minIndex = i;
for ( int j = i + 1 ; j < arr. length; j++ ) {
if ( arr[ j] < arr[ minIndex] ) {
minIndex = j;
}
}
arr[ i] = arr[ minIndex] ;
arr[ minIndex] = min;
}
for ( int s : arr
) {
System . out. print ( s + " " ) ;
}
}
}
冒泡排序
public class Demo02 {
public static void main ( String [ ] args) {
int [ ] arr = { 5 , 6 , 7 , 4 , 8 , 1 , 9 , 2 , 3 } ;
for ( int i = 0 ; i < arr. length - 1 ; i++ ) {
for ( int j = 0 ; j < arr. length - 1 - i; j++ ) {
if ( arr[ j] > arr[ j + 1 ] ) {
int tmp = arr[ j] ;
arr[ j] = arr[ j + 1 ] ;
arr[ j + 1 ] = tmp;
}
}
}
for ( int s : arr) {
System . out. print ( s + " " ) ;
}
}
}
快速排序
import java. util. Arrays ;
public class Demo05 {
public static void main ( String [ ] args) {
int [ ] nums = { - 1 , 9 , 4 , 6 , 5 , 7 , 1 , 2 , 8 } ;
quicksort ( nums, 0 , nums. length - 1 ) ;
System . out. println ( Arrays . toString ( nums) ) ;
}
public static void quicksort ( int [ ] arr, int left, int right) {
if ( left > right) {
return ;
}
int jizhun = arr[ left] ;
int i = left;
int j = right;
while ( i != j) {
while ( i < j && jizhun <= arr[ j] ) {
j-- ;
}
while ( i < j && jizhun >= arr[ i] ) {
i++ ;
}
if ( i < j) {
arr[ j] = arr[ i] ^ arr[ j] ;
arr[ i] = arr[ i] ^ arr[ j] ;
arr[ j] = arr[ i] ^ arr[ j] ;
}
}
arr[ left] = arr[ j] ;
arr[ j] = jizhun;
quicksort ( arr, left, j - 1 ) ;
quicksort ( arr, i + 1 , right) ;
}
}
二分查找
public class Demo04 {
public static void main ( String [ ] args) {
int [ ] arr = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ;
int key = 5 ;
int right = arr. length - 1 ;
int left = 0 ;
int mind = ( right + left) / 2 ;
while ( left < right) {
if ( arr[ mind] == key) {
System . out. println ( mind) ;
break ;
} else if ( key > arr[ mind] ) {
left = mind + 1 ;
} else {
right = mind - 1 ;
}
}
}
}