冒泡排序、选择排序、插入排序和二分法查找

public class HelloJava {
    public static void main(String[] args){
        HelloJava helloJava = new HelloJava();
        //helloJava.maoPao();
        //helloJava.xuanZe();
        //helloJava.chaRu();

        //二分法必须保证数列是有序的
        int[] num = {2,9,9,33,43,55,67,90};
        int i = helloJava.erFen(num, 55);
        System.out.print(i);
    }

    //冒泡排序。冒泡排序是一种稳定的排序(相同元素之间两个位置并没有改变)
    public void maoPao(){
        int [] num = {55,33,67,2,9,90,9,43};
        for (int i=0;inum[j+1]){
                    num[j] = num[j]+num[j+1];
                    num[j+1] = num[j]-num[j+1];
                    num[j] = num[j]-num[j+1];
                }
            }
        }
        for (int n:num){
            System.out.println(n);
        }
    }

    //选择排序。选择排序是一种不稳定的排序(相同元素之间两个位置可能会改变),但是速度快。
    public void xuanZe(){
        int [] num = {55,33,67,2,9,90,9,43};
        //用于记录每次比较后最小值的下标
        int minIndex = 0;
        //控制轮数
        for (int i=0;inum[j]){
                    minIndex=j;
                }
            }
            //判断需要交换的数下标是否为自己
            if (minIndex!=i){
                num[minIndex] = num[minIndex]+num[i];
                num[i] = num[minIndex]-num[i];
                num[minIndex] = num[minIndex]-num[i];
            }
        }
        for (int n:num){
            System.out.println(n);
        }
    }

    //插入排序.
    public void chaRu(){
        int [] num = {55,33,67,2,9,90,9,43};
        //控制比较的次数
        for (int i = 1;i=0;j--){
                if (num[j]>temp){
                    num[j+1] = num[j];
                }else {
                    break;
                }
            }
            if (num[j+1]!=temp){
                num[j+1] = temp;
            }
        }
        for (int n :num){
            System.out.println(n);
        }
    }

    //二分查找。效率极高,常用!(但首先应该是已经排好序的)
    public int erFen(int[] num,int key){
        //开始下标
        int start = 0;
        //结束下标
        int end = num.length-1;
        while (start<=end){
            int middle = (start+end)/2;
            if (num[middle]>key){
                end = middle-1;
            }else if(num[middle]

你可能感兴趣的:(冒泡排序、选择排序、插入排序和二分法查找)