public static void bubble_sort ( int [ ] arry) {
int n = arry. length;
for ( int i = 0 ; i < n ; i++ ) {
for ( int j = 1 ; j < n ; j++ ) {
if ( arry[ j- 1 ] > arry[ j] ) {
int tmp = arry[ j] ;
arry[ j] = arry[ j- 1 ] ;
arry[ j- 1 ] = tmp;
}
}
System. out. print ( "第" + ( i+ 1 ) + "躺排序: " ) ;
printArray ( arry) ;
System. out. println ( ) ;
}
}
第1 躺排序: 1 3 1 4 5 2 6 9
第2 躺排序: 1 1 3 4 2 5 6 9
第3 躺排序: 1 1 3 2 4 5 6 9
第4 躺排序: 1 1 2 3 4 5 6 9
第5 躺排序: 1 1 2 3 4 5 6 9
第6 躺排序: 1 1 2 3 4 5 6 9
第7 躺排序: 1 1 2 3 4 5 6 9
第8 躺排序: 1 1 2 3 4 5 6 9
public static void select_sort ( int [ ] array) {
int n = array. length;
for ( int i = 0 ; i < n ; i++ ) {
int minIndex = i;
for ( int j = i+ 1 ; j < n ; j++ ) {
if ( array[ minIndex] > array[ j] ) {
minIndex = j;
}
}
int tmp = array[ minIndex] ;
array[ minIndex] = array[ i] ;
array[ i] = tmp;
System. out. print ( "第" + ( i+ 1 ) + "躺排序: " ) ;
printArray ( array) ;
System. out. println ( ) ;
}
}
第1 躺排序: 1 3 4 1 5 9 2 6
第2 躺排序: 1 1 4 3 5 9 2 6
第3 躺排序: 1 1 2 3 5 9 4 6
第4 躺排序: 1 1 2 3 5 9 4 6
第5 躺排序: 1 1 2 3 4 9 5 6
第6 躺排序: 1 1 2 3 4 5 9 6
第7 躺排序: 1 1 2 3 4 5 6 9
第8 躺排序: 1 1 2 3 4 5 6 9
public static void insert_sort ( int [ ] array) {
int n = array. length;
for ( int i = 1 ; i < n ; i++ ) {
if ( array[ i] < array[ i- 1 ] ) {
int tmp = array[ i] ;
int index = i;
for ( int j = i- 1 ; j >= 0 ; j-- ) {
if ( array[ j] > tmp) {
array[ j+ 1 ] = array[ j] ;
index = j;
} else {
break ;
}
}
array[ index] = tmp;
}
System. out. print ( "第" + i+ "躺排序: " ) ;
printArray ( array) ;
System. out. println ( ) ;
}
}
第1 躺排序: 1 3 4 1 5 9 2 6
第2 躺排序: 1 3 4 1 5 9 2 6
第3 躺排序: 1 1 3 4 5 9 2 6
第4 躺排序: 1 1 3 4 5 9 2 6
第5 躺排序: 1 1 3 4 5 9 2 6
第6 躺排序: 1 1 2 3 4 5 9 6
第7 躺排序: 1 1 2 3 4 5 6 9
public static void shell_sort ( int [ ] array) {
int n = array. length;
int gap = n/ 2 ;
while ( gap > 0 ) {
for ( int i = gap; i < n ; i++ ) {
int tmp = array[ i] ;
int j = i;
while ( j >= gap && array[ j- gap] > tmp) {
array[ j] = array[ j- gap] ;
j = j - gap;
}
array[ j] = tmp;
}
System. out. print ( "步长为" + gap+ "的排序: " ) ;
printArray ( array) ;
System. out. println ( ) ;
gap = gap/ 2 ;
}
}
步长为4 的排序: 3 1 2 1 5 9 4 6
步长为2 的排序: 2 1 3 1 4 6 5 9
步长为1 的排序: 1 1 2 3 4 5 6 9
public static int [ ] merge_sort ( int [ ] a, int low, int high) {
int mid = ( low+ high) / 2 ;
System. out. print ( "mid为" + mid+ "的排序: " ) ;
printArray ( a) ;
System. out. println ( ) ;
if ( low< high) {
merge_sort ( a, low, mid) ;
merge_sort ( a, mid+ 1 , high) ;
merge ( a, low, mid, high) ;
}
return a;
}
public static void merge ( int [ ] a, int low, int mid, int high) {
int [ ] temp = new int [ high- low+ 1 ] ;
int i= low;
int j = mid+ 1 ;
int k= 0 ;
while ( i<= mid && j<= high) {
if ( a[ i] < a[ j] ) {
temp[ k++ ] = a[ i++ ] ;
} else {
temp[ k++ ] = a[ j++ ] ;
}
}
while ( i<= mid) {
temp[ k++ ] = a[ i++ ] ;
}
while ( j<= high) {
temp[ k++ ] = a[ j++ ] ;
}
for ( int x= 0 ; x< temp. length; x++ ) {
a[ x+ low] = temp[ x] ;
}
}
mid为3 的排序: 3 1 4 1 5 9 2 6
mid为1 的排序: 3 1 4 1 5 9 2 6
mid为0 的排序: 3 1 4 1 5 9 2 6
mid为0 的排序: 3 1 4 1 5 9 2 6
mid为1 的排序: 3 1 4 1 5 9 2 6
mid为2 的排序: 1 3 4 1 5 9 2 6
mid为2 的排序: 1 3 4 1 5 9 2 6
mid为3 的排序: 1 3 4 1 5 9 2 6
mid为5 的排序: 1 1 3 4 5 9 2 6
mid为4 的排序: 1 1 3 4 5 9 2 6
mid为4 的排序: 1 1 3 4 5 9 2 6
mid为5 的排序: 1 1 3 4 5 9 2 6
mid为6 的排序: 1 1 3 4 5 9 2 6
mid为6 的排序: 1 1 3 4 5 9 2 6
mid为7 的排序: 1 1 3 4 5 9 2 6
public static void quickSort ( int [ ] arr, int low, int high) {
System. out. print ( "low=" + low+ " high=" + high+ "的排序: " ) ;
printArray ( arr) ;
System. out. println ( ) ;
int i, j, temp, t;
if ( low> high) {
return ;
}
i= low;
j= high;
temp = arr[ low] ;
while ( i< j) {
while ( temp<= arr[ j] && i< j) {
j-- ;
}
while ( temp>= arr[ i] && i< j) {
i++ ;
}
if ( i< j) {
t = arr[ j] ;
arr[ j] = arr[ i] ;
arr[ i] = t;
}
}
arr[ low] = arr[ i] ;
arr[ i] = temp;
quickSort ( arr, low, j- 1 ) ;
quickSort ( arr, j+ 1 , high) ;
}
low= 0 high= 7 的排序: 3 1 4 1 5 9 2 6
low= 0 high= 2 的排序: 1 1 2 3 5 9 4 6
low= 0 high= - 1 的排序: 1 1 2 3 5 9 4 6
low= 1 high= 2 的排序: 1 1 2 3 5 9 4 6
low= 1 high= 0 的排序: 1 1 2 3 5 9 4 6
low= 2 high= 2 的排序: 1 1 2 3 5 9 4 6
low= 2 high= 1 的排序: 1 1 2 3 5 9 4 6
low= 3 high= 2 的排序: 1 1 2 3 5 9 4 6
low= 4 high= 7 的排序: 1 1 2 3 5 9 4 6
low= 4 high= 4 的排序: 1 1 2 3 4 5 9 6
low= 4 high= 3 的排序: 1 1 2 3 4 5 9 6
low= 5 high= 4 的排序: 1 1 2 3 4 5 9 6
low= 6 high= 7 的排序: 1 1 2 3 4 5 9 6
low= 6 high= 6 的排序: 1 1 2 3 4 5 6 9
low= 6 high= 5 的排序: 1 1 2 3 4 5 6 9
low= 7 high= 6 的排序: 1 1 2 3 4 5 6 9
low= 8 high= 7 的排序: 1 1 2 3 4 5 6 9