Java的经典排序--选择排序--冒泡排序--折半查找
选择排序
选择排序 |
3 |
2 |
1 |
5 |
8 |
0 |
1 |
3 |
2 |
5 |
8 |
1 |
1 |
2 |
3 |
5 |
8 |
2 |
1 |
2 |
3 |
5 |
8 |
3 |
1 |
2 |
3 |
5 |
8 |
public static void main(String[] args) {
int[] arr={3,2,1,5,8};
selectSort(arr);
for(int i = 0 ; i < arr.length ; i ++){
System.out.println(arr[i]) ;
}
}
//选择排序
public static void selectSort(int[] arr){
for(int i = 0 ; i < arr.length - 1 ; i ++){
for(int j = i + 1 ; j < arr.length ; j ++){
if(arr[i] > arr[j]){
int temp = arr[i] ;
arr[i] = arr[j] ;
arr[j] = temp ;
}
}
}
}
冒泡排序(大数下沉)
冒泡排序 |
3 |
2 |
1 |
5 |
8 |
0 |
2 |
1 |
3 |
5 |
8 |
1 |
1 |
2 |
3 |
5 |
8 |
2 |
1 |
2 |
3 |
5 |
8 |
3 |
1 |
2 |
3 |
5 |
8 |
public static void main(String[] args) {
int[] arr={3,2,1,5,8};
bubbleSort(arr);
for(int i = 0 ; i < arr.length ; i ++){
System.out.println(arr[i]) ;
}
}
//冒泡排序大数下沉
public static void bubbleSort(int[] arr){
//需要比较多少轮
for(int i = 0 ; i < arr.length - 1 ; i ++){
//每一轮需要比较多少次
for(int j = 0 ; j < arr.length - 1 - 1; j ++){
if(arr[j] > arr[j + 1]){
int temp = arr[j] ;
arr[j] = arr[j + 1] ;
arr[j + 1] = temp ;
}
}
}
}
折半查找
折半查找 |
3 |
2 |
1 |
5 |
8 |
3 |
1 |
2 |
3 |
5 |
8 |
public static void main(String[] args) {
int index = binarySearch(arr , 9);
System.out.println(index) ;
}
//折半查找
public static int binarySearch(int[] arr , int n){
int start = 0 ;//起始值
int end = arr.length - 1 ;//末尾值
while(start <= end){
//中间那个值
int mid = (start + end) / 2 ;
if(arr[mid] ==n){
return mid ;
}
//值如果在左边
else if(arr[mid] > n ){
end = mid - 1 ;
}
//值在右边
else{
start = mid + 1 ;
}
}
//没有值则返回一个空的
return -1 ;
}