zoukankan      html  css  js  c++  java
  • 选择排序

    思路:固定数组中的一个位置,将数组其他位置上的元素依次与该(固定住的)位置上的元素进行比较,若比该位置上的元素小(或大),则交换两数,经过第一轮比较,就可以排出一个最小(或最大)的数;然后该位置下移,将剩下的数据再按照第一步不停的与固定住的元素进行比较,交换,最终就可以完成有序排列.

    附上代码:

    package cn.qujianlei.easy;
    
    public class SelectionSortDemo {
        
        public static void selectSort(int...a){
            for(int i=0;i<a.length-1;i++){
                for(int j=i+1;j<a.length;j++){
                    if(a[i]>a[j]){//按照递增的顺序
                        a[i]=a[i]^a[j];//这里用异或的方式进行两数的交换
                        a[j]=a[i]^a[j];//原理:一个数异或另一个数两次仍然是原数
                        a[i]=a[i]^a[j];//例:a^b^b=a
                    }
                    System.out.print("      第"+i+"步"+"("+j+")"+"分步排序结果:");
                    for (int m = 0; m < a.length; m++) {
                        System.out.print(" "+a[m]);
                    }
                    System.out.println();
                }
                System.out.print("第"+i+"步排序结果:");
                for (int k = 0; k < a.length; k++) {
                    System.out.print(" "+a[k]);
                }
                System.out.println();
            }
        }
        
        public static void main(String[] args) {
            int[]shuzu=new int[10];
            for (int i = 0; i < shuzu.length; i++) {
                shuzu[i]=(int)(Math.random()*101+100);//用Math的随机函数方法初始化数组,随机出来的数的范围是100~201的int型数
            }
            System.out.println("排序前的数组为:");
            for (int i = 0; i < shuzu.length; i++) {
                System.out.print(shuzu[i]+" ");
            }
            System.out.println();
            selectSort(shuzu);
            System.out.println("排序后的数组为:");
            for (int i = 0; i < shuzu.length; i++) {
                System.out.print(shuzu[i]+" ");
            }
            System.out.println();
        }
    }

    运行结果:

    排序前的数组为:
    149 136 148 107 134 102 134 114 133 186
    第0步(1)分步排序结果: 136 149 148 107 134 102 134 114 133 186
    第0步(2)分步排序结果: 136 149 148 107 134 102 134 114 133 186
    第0步(3)分步排序结果: 107 149 148 136 134 102 134 114 133 186
    第0步(4)分步排序结果: 107 149 148 136 134 102 134 114 133 186
    第0步(5)分步排序结果: 102 149 148 136 134 107 134 114 133 186
    第0步(6)分步排序结果: 102 149 148 136 134 107 134 114 133 186
    第0步(7)分步排序结果: 102 149 148 136 134 107 134 114 133 186
    第0步(8)分步排序结果: 102 149 148 136 134 107 134 114 133 186
    第0步(9)分步排序结果: 102 149 148 136 134 107 134 114 133 186
              第0步排序结果: 102 149 148 136 134 107 134 114 133 186
    第1步(2)分步排序结果: 102 148 149 136 134 107 134 114 133 186
    第1步(3)分步排序结果: 102 136 149 148 134 107 134 114 133 186
    第1步(4)分步排序结果: 102 134 149 148 136 107 134 114 133 186
    第1步(5)分步排序结果: 102 107 149 148 136 134 134 114 133 186
    第1步(6)分步排序结果: 102 107 149 148 136 134 134 114 133 186
    第1步(7)分步排序结果: 102 107 149 148 136 134 134 114 133 186
    第1步(8)分步排序结果: 102 107 149 148 136 134 134 114 133 186
    第1步(9)分步排序结果: 102 107 149 148 136 134 134 114 133 186
              第1步排序结果: 102 107 149 148 136 134 134 114 133 186
    第2步(3)分步排序结果: 102 107 148 149 136 134 134 114 133 186
    第2步(4)分步排序结果: 102 107 136 149 148 134 134 114 133 186
    第2步(5)分步排序结果: 102 107 134 149 148 136 134 114 133 186
    第2步(6)分步排序结果: 102 107 134 149 148 136 134 114 133 186
    第2步(7)分步排序结果: 102 107 114 149 148 136 134 134 133 186
    第2步(8)分步排序结果: 102 107 114 149 148 136 134 134 133 186
    第2步(9)分步排序结果: 102 107 114 149 148 136 134 134 133 186
              第2步排序结果: 102 107 114 149 148 136 134 134 133 186
    第3步(4)分步排序结果: 102 107 114 148 149 136 134 134 133 186
    第3步(5)分步排序结果: 102 107 114 136 149 148 134 134 133 186
    第3步(6)分步排序结果: 102 107 114 134 149 148 136 134 133 186
    第3步(7)分步排序结果: 102 107 114 134 149 148 136 134 133 186
    第3步(8)分步排序结果: 102 107 114 133 149 148 136 134 134 186
    第3步(9)分步排序结果: 102 107 114 133 149 148 136 134 134 186
              第3步排序结果: 102 107 114 133 149 148 136 134 134 186
    第4步(5)分步排序结果: 102 107 114 133 148 149 136 134 134 186
    第4步(6)分步排序结果: 102 107 114 133 136 149 148 134 134 186
    第4步(7)分步排序结果: 102 107 114 133 134 149 148 136 134 186
    第4步(8)分步排序结果: 102 107 114 133 134 149 148 136 134 186
    第4步(9)分步排序结果: 102 107 114 133 134 149 148 136 134 186
              第4步排序结果: 102 107 114 133 134 149 148 136 134 186
    第5步(6)分步排序结果: 102 107 114 133 134 148 149 136 134 186
    第5步(7)分步排序结果: 102 107 114 133 134 136 149 148 134 186
    第5步(8)分步排序结果: 102 107 114 133 134 134 149 148 136 186
    第5步(9)分步排序结果: 102 107 114 133 134 134 149 148 136 186
              第5步排序结果: 102 107 114 133 134 134 149 148 136 186
    第6步(7)分步排序结果: 102 107 114 133 134 134 148 149 136 186
    第6步(8)分步排序结果: 102 107 114 133 134 134 136 149 148 186
    第6步(9)分步排序结果: 102 107 114 133 134 134 136 149 148 186
              第6步排序结果: 102 107 114 133 134 134 136 149 148 186
    第7步(8)分步排序结果: 102 107 114 133 134 134 136 148 149 186
    第7步(9)分步排序结果: 102 107 114 133 134 134 136 148 149 186
              第7步排序结果: 102 107 114 133 134 134 136 148 149 186
    第8步(9)分步排序结果: 102 107 114 133 134 134 136 148 149 186
              第8步排序结果: 102 107 114 133 134 134 136 148 149 186
    排序后的数组为:
    102 107 114 133 134 134 136 148 149 186

    注:括号内的数任然是内层循环。

    附上图解:

    简单点说就是每次都定住一个数,将它与其他的数进行比较,比它小就交换,不小就继续比较下一个,与其他数比较完了之后,换下一个数接着定,接着比,交换,循环...

  • 相关阅读:
    Java核心技术
    浏览器地址栏输入url回车之后发生了些什么
    Java相关面试题总结+答案(十)
    Java相关面试题总结+答案(九)
    Java相关面试题总结+答案(八)
    Java相关面试题总结+答案(七)
    input type=‘file’方法
    禁止用户复制网页内容
    js添加背景水印
    angular双向绑定
  • 原文地址:https://www.cnblogs.com/qjlbky/p/6129006.html
Copyright © 2011-2022 走看看