插入排序代码逻辑以及如何使用对数器进行验证
package com. nanjia. chapter1;
import java. util. Arrays;
public class InsertSort {
public static void insertSort ( int [ ] arr) {
if ( arr == null || arr. length < 2 )
return ;
for ( int i = 1 ; i < arr. length; i++ ) {
for ( int j = i - 1 ; j >= 0 && arr[ j] > arr[ j + 1 ] ; j-- ) {
swap ( arr, j, j + 1 ) ;
}
}
}
public static void swap ( int [ ] arr, int val1, int val2) {
int t = 0 ;
t = arr[ val1] ;
arr[ val1] = arr[ val2] ;
arr[ val2] = t;
}
public static int [ ] generateRandomArray ( int maxSize, int maxValue) {
int [ ] randomArr = new int [ ( int ) ( maxSize * Math. random ( ) ) ] ;
for ( int i = 0 ; i < randomArr. length; i++ ) {
randomArr[ i] = ( ( int ) ( ( maxValue + 1 ) * Math. random ( ) ) - ( ( int ) ( maxValue * Math. random ( ) ) ) ) ;
}
return randomArr;
}
public static int [ ] copyArray ( int [ ] arr) {
if ( arr == null)
return null;
int [ ] copyArr = new int [ arr. length] ;
for ( int i = 0 ; i < arr. length; i++ ) {
copyArr[ i] = arr[ i] ;
}
return copyArr;
}
public static boolean isEqual ( int [ ] arr1, int [ ] arr2) {
if ( arr1 == null && arr2 == null) {
return true ;
}
if ( arr1 != null && arr2 == null) {
return false ;
}
if ( arr1 == null && arr2 != null) {
return false ;
}
if ( arr1. length != arr2. length) {
return false ;
}
for ( int i = 0 ; i < arr1. length; i++ ) {
if ( arr1[ i] != arr2[ i] )
return false ;
}
return true ;
}
public static void main ( String[ ] args) {
int maxSize = 50 ;
int maxValue = 100 ;
int size = 1000 ;
for ( int i = 0 ; i < size; i++ ) {
int [ ] arr1 = generateRandomArray ( maxSize, maxValue) ;
int [ ] arr2 = copyArray ( arr1) ;
Arrays. sort ( arr2) ;
insertSort ( arr1) ;
System. out. println ( isEqual ( arr1, arr2) ) ;
if ( ! isEqual ( arr1, arr2) ) {
System. out. println ( "error" ) ;
break ;
}
}
}
}