Java实现排序算法(冒泡排序、选择排序、插入排序、二分查找排序)

1、冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//冒泡排序
package 排序算法;
public class Test {
public static void main(String[] args) {
int[] nums={34,4,56,17,90,65};
for(int i=0;i<nums.length-1;i++){
for(int j=0;j<nums.length-1-i;j++){ //比较轮数等于数列的长度-1
if(nums[j]>nums[j+1]){
nums[j]=nums[j]+nums[j+1];
nums[j+1]=nums[j]-nums[j+1];
nums[j]=nums[j]-nums[j+1];
}
}
}
for (int x:nums){
System.out.println(x);
}
}
}

2、选择排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//选择排序算法
package 排序算法;
public class Test2 {
public static void main(String[] args) {
int[] nums={34,4,56,17,90,65};
int minIndex=0;//用来记录每次比较的最小值下标
for (int i=0;i<nums.length;i++){
minIndex=i; //每轮假设一个最小值下标
for(int j=i+1;j<nums.length;j++){
if(nums[minIndex]>nums[j]){
minIndex=j;
}
}
//判断需要交换的数下标是否为自己
if (minIndex!=i){
nums[minIndex]=nums[minIndex]+nums[i];
nums[i]=nums[minIndex]-nums[i];
nums[minIndex]=nums[minIndex]-nums[i];
}
}
for (int n:nums){
System.out.println(n);
}
}
}

3、插入排序

//插入排序算法
package 排序算法;
public class Test3 {
    public static void main(String[] args){
    int[] nums={34,4,56,17,90,65};
    for (int i=1;i<nums.length;i++){
        int temp=nums[i];
        int j=0;
        for(j=i-1;j>=0;j--){
            if (nums[j]>temp){
                nums[j+1]=nums[j];
            }else {
                break;
            }
        }
        if (nums[j+1]!=temp){
            nums[j+1]=temp;
        }
    }
    for (int x:nums){
        System.out.println(x);
    }
}

}

4、二分查找排序

1
2
3
4
5
6
7
8
9
package 排序算法;
import java.util.*;
public class Test4{
public static void main(String[] args){
int[] num={10,20,50,65,86,90};
int index=Arrays.binarySearch(num, 10);
System.out.println("找到的数字下标是:"+index);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//二分查找算法(折半查找)
package 排序算法;
import java.util.Scanner;;
public class Test4 {
public static void main(String[] args){
//必须保证数列是有序的
int[] num = {10,20,50,65,86,90};
int index=binarySearch(num, 22);
System.out.println(index);
}
//二分查找
public static int binarySearch(int[] num,int key){
int start=0; //开始下标
int end=num.length-1; //结束下标
while(start<=end){
int mid=(start+end)/2;

if(num[mid]>key){
end=mid-1;
}else if (num[mid]<key) {
start=mid+1;
}else {
return mid;
}
}
return -1;
}
}
-------------本文结束,感谢您的阅读-------------