Java常用排序算法冒泡排序与选择排序总结

概述

排序算法有好多种,也在特殊的场景中,我们经常需要对我们的数据进行排序,这里对经典的排序做一个记录整理。

一冒泡排序

原理分析

冒泡排序其实就是对一组数以类似冒泡对形式,进行从大到小或者从小到大的排序,那么什么是冒泡呢?
其实也简单,比如有一组数字:3,9,6,2


第一轮比较

以上图只比较了第一轮,会冒出一个较大大,依此类推进行比较。

以此比较两个数字,将较较小的数字一个一个冒上来,将相反的较大的数字往下沉,然后内层循环每一轮比较就会冒出来一个最大数字,这样有2层循环即可,外层循环完后,所有的数字就冒完了。

代码实现(java)


public class MPTest {
      public static void main(String[] args) {
        int [] numbers={3,9,6,2};
        int temp=0;
        for(int i=0;i<numbers.length-1;i++){
            for(int j=0;j<numbers.length-1-i;j++){//内层循环一次冒泡出一个比较小的数上来
                if(numbers[j]>numbers[j+1]){//如果第一个数字比第二个大则交换位置
                    temp=numbers[j];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;
                    }
            }
        }
        for(int i=0;i<numbers.length;i++){
            System.out.println("第"+i+"个数字是:"+numbers[i]);
        }   
    }
    
}

输出结果是:

第0个数字是:2
第1个数字是:3
第2个数字是:6
第3个数字是:9

二选择排序

原理分析

选择排序其实其实思路也是比较简单的,也是2层循环。
主要思路是记录一个最小值,然后内层循环如果有比它小的就跟这个最小值交换位置,这样就能确定第一位最小值,然后第二次循环也是如此,以此类推就能按照由小到大排序。

还是对这几个数字进行排序:3 9 6 2

第一次循环:2 9 6 3

第二次循环:2 3 6 9

代码实现(java)


public class XZTest {
    public static void main(String[] args) {
           int[] numbers = {3, 9, 6, 2};
            int temp=0;
            for (int i = 0; i < numbers.length; i++) {
                int min = i;
                for (int j = i + 1; j < numbers.length; j++) {
                    if(numbers[j]< numbers[min]){
                       min=j;
                    }
                }
                if(i!=min){
                    temp=numbers[i];
                    numbers[i]=numbers[min];
                    numbers[min]=temp;
                }
            }
            for(int i=0;i<numbers.length;i++){
                System.out.println("第"+i+"个数字是:"+numbers[i]);
            }   
    }
}

输出结果是一样对:

第0个数字是:2
第1个数字是:3
第2个数字是:6
第3个数字是:9
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 1,495评论 1 4
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,237评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,753评论 0 15
  • 姓名:冉乔琪~公司:天兴医药 【日精进打卡第※112※天】 【知~学习】 《六项精进》2遍 共335遍 《大学》2...
    小小新酱阅读 317评论 0 0
  • 到了成都第一要务是找好吃的。事先做了功课,发现好吃的太多了。有的靠近景点,有的在街巷。时间有限,决定跟着感觉走,就...
    流年芳华阅读 568评论 6 11