快速排序
public class QuickSort {
public static void main ( String [ ] args) {
int [ ] arr = { 10 , 7 , 2 , 4 , 7 , 62 , 3 , 4 , 2 , 1 , 8 , 9 , 19 } ;
quickSort ( arr, 0 , arr. length- 1 ) ;
for ( int i = 0 ; i < arr. length; i++ ) {
System . out. print ( arr[ i] + " " ) ;
}
}
private static void quickSort ( int [ ] arr, int left, int right) {
if ( left >= right) return ;
int i = left, j = right;
while ( i < j) {
while ( i < j && arr[ j] >= arr[ left] ) j-- ;
while ( i < j && arr[ i] <= arr[ left] ) i++ ;
swap ( arr, i, j) ;
}
swap ( arr, left, i) ;
quickSort ( arr, left, i- 1 ) ;
quickSort ( arr, i+ 1 , right) ;
}
private static void swap ( int [ ] arr, int i, int j) {
int tmp = arr[ i] ;
arr[ i] = arr[ j] ;
arr[ j] = tmp;
}
}
归并排序
public class MergeSort {
public static void main ( String [ ] args) {
int arr[ ] = { 8 , 4 , 5 , 7 , 1 , 3 , 6 , 2 } ;
int tmp[ ] = new int [ arr. length] ;
mergeSort ( arr, 0 , arr. length- 1 , tmp) ;
for ( int i = 0 ; i < arr. length; i++ ) {
System . out. print ( arr[ i] + " " ) ;
}
}
private static void mergeSort ( int [ ] arr, int left, int right, int [ ] tmp) {
if ( left < right) {
int mid = ( left + right) / 2 ;
mergeSort ( arr, left, mid, tmp) ;
mergeSort ( arr, mid+ 1 , right, tmp) ;
merge ( arr, left, mid, right, tmp) ;
}
}
private static void merge ( int [ ] arr, int left, int mid, int right, int [ ] tmp) {
int i = left, j = mid + 1 , t = 0 ;
while ( i <= mid+ 1 && j <= right) {
if ( arr[ i] < arr[ j] ) {
tmp[ t++ ] = arr[ i++ ] ;
} else {
tmp[ t++ ] = arr[ j++ ] ;
}
}
while ( i <= mid) {
tmp[ t++ ] = arr[ i++ ] ;
}
while ( j <= right) {
tmp[ t++ ] = arr[ j++ ] ;
}
t = 0 ;
while ( left <= right) {
arr[ left++ ] = tmp[ t++ ] ;
}
}
}