栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据结构与算法st8:排序算法学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构与算法st8:排序算法学习

内排序:冒泡排序,选择排序,插入排序

冒泡排序:(相邻元素进行比较并交换)

步骤3:是对冒泡排序的优化!!!

    //优化后的冒泡排序
    public static int[] bubble(int[] arr){
        int temp=0;
        boolean flag=false;//优化冒泡排序

        //外面的大排序:数组的长度减1
        for (int i = 0; i < arr.length-1; i++) {
            flag=false;
            //内部的排序,每次都会将一个最大的数在最后
            for (int j = 0; j < arr.length-1-i; j++) {
                if(arr[j]>arr[j+1]){
                    flag=true;
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
            //如果前面的这一趟没有排序,说明数组已经排完了
            if(!flag){
                break;
            }
//            System.out.println("第"+(i+1)+"次排序:"+Arrays.toString(arr));

        }
        return arr;
    }

选择排序:(相邻元素比较找出最小的元素及其序号,与指定的位置进行交换)


    //降序-选择排序
    public static int[] select(int[] arr){
        int min=arr[0];
        int index=0;
        
        for (int i = 0; i < arr.length-1; i++) {
            min=arr[i];//找到每一趟的最小值和它的位置
            index=i;
            for(int j=i+1;j 

插入排序:(待插入的数分割了原来的数组,插入数据之前的数都是排好序的)
待插入的数分割了原来的数组,插入数据之前的数都是排好序的,每一趟排序比较待插入的数据与它之前排好序的数,从后往前(排好序的数)一一比较,一旦待插入的数小于比较的数据,那么这个比较的数就往后移动一个位置(我们的目标是找到那个比待插入数还小的数,然后将待插入的数放置在它的后面)。极端情况,所有排好序的数都比待插入的数大,也就是说所有排好序的数都往后移动了一个位置,此时待插入的数据就放在了数组的arr[0]的位置.



    public static int[] insert(int[] arr){
        int insert=arr[1];
        int index=0;
        //默认的第一个数已经是有序数组的一员
        for (int i = 1; i < arr.length; i++) {
            insert=arr[i];
            index=i;//这个序号之前的数已经排好序的
            //可能出现前面的数全部比要插入的数大,也就是前面的数基本所有都往后移了个位置
            boolean flag=false;
            for (int j = index-1; j >=0; j--) {
                if(insert
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659183.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号