Java教程

java的选择排序和冒泡排序

本文主要是介绍java的选择排序和冒泡排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

选择排序:

    public void sort(int[] i) {
        //排序完是从小到大
        //只需要排序 i.length - 1 轮
        //54321
        //14325
        //12345
        
        for (int j = 0; j < i.length - 1; j++) {
            //外层循环保证循环多少次
            int min = i[j]; //假定最小值为当前值
            int temp = j;   //记录最小值的下标
//            System.out.println("j = " + j);
//            System.out.println("min = " + min);
//            System.out.println("temp = " + temp);
            for (int z = j; z < i.length; z++) {
                //开头的位置可以后移,所以跟着j走
                //内层循环干活,找最小值并交换
//                System.out.println("\tz = " + z);
                if(i[z] < min) {
                    min = i[z];
//                    System.out.println("\t\tmin = " + min);
                    temp = z;
//                    System.out.println("\t\ttemp = " + temp);
                }
                
                if(z == i.length - 1) {
                    //循环到最后一个位置了,上面那个if也走过了
                    if(min != i[j]) {
                        //如果最小值是i[j]就不用动位置,所以这里判断不是i[j]的才调换位置
                        i[temp] = (i[temp] ^ i[j]);
                        i[j] = (i[temp] ^ i[j]);
                        i[temp] = (i[temp] ^ i[j]);
                    }
                }
            }
        }
    }

冒泡排序

    public void sort(int[] i) {
        for(int j = 0; j < i.length - 1; j++) {
            //只要做数组长度 - 1 轮就可以排序完毕
            for (int m = i.length - 1, n = 0; m >= 1; m--,n++) {
                //m是判断遍历到哪个位置截止
                //n是保证从0开始
                
                //每一轮遍历的数量都比上一轮遍历的数量 - 1
                //假设数组长度为5
                //第一轮应该遍历从1 - 5(0 - 4)  5
                //第二轮应该遍历从1 - 4(0 - 3)  4
                //第四轮应该遍历从1 - 2(0 - 1)  1
                
                //实属是自己把自己绕晕了……
                
                if(i[n + 1] < i[n]) {
                    //交换
                    i[n] = (i[n] ^ i[n + 1]);
                    i[n + 1] = (i[n] ^ i[n + 1]);
                    i[n] = (i[n] ^ i[n + 1]);
                }
            }
        }
    }
这篇关于java的选择排序和冒泡排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!