Java 常用排序

Java 常用排序,习惯规则的使用“从小到小”后者从“从大到小”进行数组的相关排序!为了方面应用直接采取工具类的方式来抽取相关方法。
以下列出常用的排序方式:
需要补充说明的是:排序是一种算法,希尔排序是排序最快的,运算最快的,效率最高的!


public class SortOperation {

    /**
     * 选择排序
     * 拿到数组的第0个元素,依次为之后的元素进行对比
     * 第一次排序结束之后,拿数组的第1个元素依次对比(第0个元素除外)
     * @param data
     */
    public void selectSort(int[] data) {

        for (int i = 0; i < data.length - 1; i++) {
            for (int j = i + 1; j < data.length; j++) {
                if (data[i] > data[j]) {
                    int temp = data[i];
                    data[i] = data[j];
                    data[j] = temp;
                }
            }
        }

        System.out.println("选择排序的结果值:");
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i] + "、");
        }
    }



 /**
     * 冒泡排序
     *
     * @param data
     */
    public void bubbleSort(int[] data) {

        for (int i = 0; i < data.length - 1; i++) {

            for (int j = 0; j < data.length - i - 1; j++) {
                if (data[j] > data[j + 1]) {
                    int temp = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = temp;


                }
            }
        }
        System.out.println("冒泡排序的结果值:");
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i] + "、");
        }
    }

  /**
     * 折半查找法
     *
     * @param key
     * @param data
     */
    public static int biSearch(int key, int[] data) {

        int start = 0;
        int end = data.length - 1;

        int center = (start + end) >> 1;  //  ">>1" 代表 "/2"

        while (data[center]!= key) {
            if (key > data[center]) {
                start = center + 1;
            } else if (key < data[center]) {
                end = center - 1;
            }
            if (start > end) {   // key 大于 数组中的任何一个 元素的时候,使用 -1 来标示
                return -1;
            }

            center = (start + end) >> 1;
        }
        return center;
    }

}

/**
 *测试类
 */
public class MyClass {
    private static int []data = {5, 3, 4, 1, 0, 2, 12,};
    private static int b[] = {1, 3, 4, 45, 50, 52, 62,};
    public static void main(String args[]) {
        SortOperation operation = new SortOperation();

//        operation.selectSort(data);
        operation.bubbleSort(data);
         int index = operation.biSearch(320,b);
        System.out.println("下标:"+index);
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值