1、二分法
public class binarySeach_1 {
public static int recursionBinarySearch ( int [ ] arr, int key, int low, int high) {
if ( key< arr[ low] || key> arr[ high] || low> high) {
return - 1 ;
}
int mid= ( low+ high) / 2 ;
if ( arr[ mid] > key) {
return recursionBinarySearch ( arr, key, low, mid- 1 ) ;
} else if ( arr[ mid] < key) {
return recursionBinarySearch ( arr, key, mid+ 1 , high) ;
} else {
return mid;
}
}
}
1.1、二分法测试用例
public static void main ( String[ ] args) {
int [ ] arr= { 1 , 2 , 5 , 9 , 10 , 40 , 50 , 90 } ;
int key= 9 ;
int position= recursionBinarySearch ( arr, key, 0 , arr. length- 1 ) ;
if ( position== - 1 ) {
System. out. println ( "查找不存在" ) ;
} else {
System. out. println ( "查找的为" + position) ;
}
}
2、冒泡排序
public class bubbleSort {
public static void BubbleSort ( int [ ] a, int n) {
int i, k = n;
boolean flag;
flag = true ;
while ( flag) {
flag = false ;
for ( i = 1 ; i < k; i++ ) {
if ( a[ i] < a[ i - 1 ] ) {
int temp;
temp = a[ i] ;
a[ i] = a[ i - 1 ] ;
a[ i - 1 ] = temp;
flag = true ;
}
}
k-- ;
}
}
}
2.2、冒泡排序测试用例
public static void main ( String[ ] args) {
int [ ] arr = { 1 , 5 , 6 , 9 , 4 , 8 , 2 , 3 } ;
BubbleSort ( arr, arr. length) ;
for ( int i : arr) {
System. out. print ( i + "," ) ;
}
}
3、选择排序
public class selectSort {
public static void SelectSort ( int [ ] arr) {
for ( int i = 0 ; i < arr. length - 1 ; i++ ) {
int minIndex = i;
for ( int j = i + 1 ; j < arr. length; j++ ) {
if ( arr[ j] < arr[ minIndex] )
minIndex= j;
}
if ( i!= minIndex) {
int temp;
temp= arr[ i] ;
arr[ i] = arr[ minIndex] ;
arr[ minIndex] = temp;
}
}
}
}
3.1、选择排序测试用例
public static void main ( String[ ] args) {
int [ ] arr= { 1 , 5 , 6 , 8 , 7 , 4 , 3 , 9 } ;
SelectSort ( arr) ;
for ( int i : arr) {
System. out. print ( i+ "," ) ;
}
}
4、直接插入排序
public class InsertSort {
public static void main ( String[ ] args) {
int [ ] arr= { 1 , 465 , 64 , 45 , 8 , 78 , 25 , 3 , 5 } ;
insertSort ( arr) ;
for ( int i : arr) {
System. out. print ( i+ "," ) ;
}
}
public static void insertSort ( int [ ] arr) {
for ( int i= 1 ; i< arr. length; i++ ) {
int temp= arr[ i] ;
int j= i- 1 ;
for ( ; j> 0 ; j-- ) {
if ( arr[ j] > temp) {
arr[ j+ 1 ] = arr[ j] ;
} else {
break ;
}
}
arr[ j+ 1 ] = temp;
}
}
}
5、快速排序
public class QuickSort {
private static int partition ( int [ ] arr, int low, int high) {
int pivot = arr[ low] ;
while ( low < high) {
while ( low < high && arr[ high] >= pivot) -- high;
arr[ low] = arr[ high] ;
while ( low < high && arr[ low] <= pivot) ++ low;
arr[ high] = arr[ low] ;
}
arr[ low] = pivot;
return low;
}
private static void qsort ( int [ ] arr, int low, int high) {
if ( low < high) {
int pivot = partition ( arr, low, high) ;
qsort ( arr, low, pivot - 1 ) ;
qsort ( arr, pivot + 1 , high) ;
}
}
}
5.1、快速排序测试用例
public static void main ( String[ ] args) {
int [ ] arr = { 1 , 6 , 8 , 5 , 3 , 4 , 7 , 9 , 10 } ;
qsort ( arr, 0 , arr. length - 1 ) ;
for ( int i : arr) {
System. out. print ( i+ "," ) ;
}
}