首页 > 其他分享 >选择排序,选择排序是对冒泡排序的改进,对数据量较大的排序效率会有很大提升

选择排序,选择排序是对冒泡排序的改进,对数据量较大的排序效率会有很大提升

时间:2022-10-14 00:35:42浏览次数:63  
标签:12 16 int 冒泡排序 34 数据量 array 排序

选择排序的原理:

从第一个元素开始,分别于后面的元素相比较,遇到最小值就交换位置,第一轮结束;从第二个元素开始,分别与后面的元素相比较,找到倒数第二小的元素,并交换位置,重复上述步骤,直到排序完成。

定义一个数组:int[] a={12,34,16,7};

第一轮:

指针指向第一个元素12,先与34作比较,最小还是12;再与16作比较,最小还是12;再与7作比较,最小值7。

输出结果:7,34,16,12

第二轮:

指针指向第二个元素,先与16作比较,最小16,交换;再与7做比较,最小7,交换

输出结果:7,12,16,34

第三轮:

指针指向第三个元素,与34做比较,最小16

输出结果:7,12,16,34

public static void main(String[] args) {
        int[] array={12,8,24,6};//定义一个数组
        //第一轮排序
        int len=array.length;
        for (int i=0;i<len-1;i++){
            int min=array[i];//每一轮回的最小值都是array[i]
            int minIdenx=i;//最小值的索引值每一轮回都是i
            for(int j=i+1;j<len;j++){
            if(min>array[j]){//如果前面的值大于后面的值,最小值为后面的
                min=array[j];
                minIdenx=j;//找到最小值的索引
            }
            }
            if(i!=minIdenx){//如果最小值是自己可以不用进行下面交换
            int temp=array[i];
            array[i]=min;
            array[minIdenx]=temp;
            }
        }
        System.out.println(Arrays.toString(array));
    }

原理很好懂,但是感觉每次都要与最小值交换会有点多余,代码还是自己多敲敲,可以直接用最值得索引来进行交换值

      int[] a={67,389,47,489,2};
        int len=a.length;
        for (int i = 0; i < len-1; i++) {
            int minIdex=i;
            for(int j=i+1;j<len;j++){
                if(a[minIdex]>a[j]){
                    minIdex=j;
                }
            }
            if(i!=minIdex){
                int temp=a[i];
                a[i]=a[minIdex];
                a[minIdex]=temp;
            }
        }
        System.out.println(Arrays.toString(a));

 

标签:12,16,int,冒泡排序,34,数据量,array,排序
From: https://www.cnblogs.com/Liku-java/p/16790191.html

相关文章

  • elasticsearch聚合查询之排序
    排序默认只能按两个字段排序:_count和_key 如果想按二次聚合结果中的字段排序语法如下: GEThow2java/product/_search//求每个地方商品数量,并按平均价格从高往低排......
  • ASP构造大数据量的分页SQL语句
     1<%@Language = "VBScript" Codepage = "936"%> 2<% 3'分页sql语句生成代码 4Fun......
  • Java数组06(冒泡排序)
    冒泡的代码两层循环,外层冒泡轮数,里层依次比较比较数组中,两个相邻的元素,如果的一个数比第二个数大,我们就交换他们的位置每一次比较,都会产生出一个最大,或者最小的数......
  • python使用xml.dom.minidom写xml节点属性会自动排序问题解决
    1.背景及问题一个xml文件,过滤掉部分节点,生成新的xml文件,但是生成后,发现节点的属性顺序变化了,根据key的字母信息排了序。如原始信息:<stringtypename="time_type"length......
  • 【算法】时间频度与时间复杂度、归并排序、StringBuffer和StringBuilder详解!
    算法中的时间频度与时间复杂度时间频度一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度......
  • 选择排序
    选择排序代码importjava.util.Arrays;publicclassSelectionSort{publicstaticvoidmain(String[]args){int[]numbers={3,1,4,2,6,5};......
  • 769. 最多能完成排序的块
    解题思路:首先明确一个观念,排好序的arr中arr[i]=i;而如果出现了位置arr[i]≠i,则说明至少i位置到arr[i]位置都是无序的;而如果从i位置到arr[i]位置中有比arr[i]......
  • 排序和过滤源码分析,RBAC的介绍和使用,后台管理simplui的介绍和使用
    1.排序和过滤源码分析#继承了GenericAPIView+ListModelMixin,只要在视图类中配置filter_backends它就能实现过滤和排序-drf内置的过滤类(SearchFilter),排序类(Ordering......
  • 冒泡排序(对于数组元素较少的可以采用这种方法进行比较)
    对于数组个数比较少的,我们可以采用冒泡排序的方法来进行排序,他的原理其实是利用两层循环来进行比较,如果n个数要进行排序,那至少要进行n-1次的回合,而且每次需要排n-i次,就像吐......
  • vue拖拽排序功能
    实现效果(可以拖拽排序)  实现步骤一:安装依赖npminstallvuedraggable--save二:在页面中引入importdraggablefrom"vuedraggable";components:{draggab......