Day562.冒泡排序&选择排序 -数据结构和算法Java

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day562.冒泡排序&选择排序 -数据结构和算法Java相关的知识,希望对你有一定的参考价值。

冒泡排序

一、基本介绍


二、流程图解


三、代码实现

/**
 * @Author Achang
 * @Date 2022/3/19 16:08
 * 冒泡排序
 **/
public class BubbleSort 
    public static void main(String[] args) 
        int arr[] = 3,9,-1,10,-2;

        //临时变量
        int temp = 0;
        boolean flag = false;//表示是否进行过交换

        //第一趟排序
        for (int i = 0; i < arr.length - 1 - 0; i++) 
            //如果前面的数字比后面大,则交换
             if (arr[i] > arr[i+1])
                 temp = arr[i];
                 arr[i] = arr[i+1];
                 arr[i+1] = temp;
             
        

        //第二趟排序
        for (int i = 0; i < arr.length - 1 - 1; i++) 
            //如果前面的数字比后面大,则交换
            if (arr[i] > arr[i+1])
                temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            
        

        //第三趟排序
        for (int i = 0; i < arr.length - 1 - 2; i++) 
            //如果前面的数字比后面大,则交换
            if (arr[i] > arr[i+1])
                temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            
        

        //第四趟排序
        for (int i = 0; i < arr.length - 1 - 3; i++) 
            //如果前面的数字比后面大,则交换
            if (arr[i] > arr[i+1])
                temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            
        


        //===========================================================================
        //整合上面的为一个for循环
        for (int i = 0; i < arr.length-1; i++) 
            for (int i1 = 0; i1 < arr.length - i; i1++) 
                //如果前面的数字比后面大,则交换
                if (arr[i] > arr[i+1])
                    temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                
            
        

        //优化,当一趟下来没有一次交换动作,则就可以提前结束
        for (int i = 0; i < arr.length-1; i++) 
            for (int i1 = 0; i1 < arr.length - i; i1++) 
                //如果前面的数字比后面大,则交换
                if (arr[i] > arr[i+1])
                    flag = true;
                    temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                
            

            if (!flag)
                break;
            else 
                flag = false;//当上次交换了,需要重置
            
        

    


选择排序

一、选择排序思路分析图

二、选择排序思路图解


三、代码实现

/**
 * @Author Achang
 * @Date 2022/3/19 16:46
 * 选择排序
 **/
public class SelectSort 
    public static void main(String[] args) 

        int arr[] = -90,66,-1,3,4,0,44,22,50;
        selectSort(arr);
        System.out.println(Arrays.toString(arr));
    


    public static void selectSort(int arr[])
        int temp;
        for (int i = 0; i < arr.length - 1; i++) 
            for (int i1 = i+1; i1 < arr.length; i1++) 
                if (arr[i] > arr[i1])
                    temp = arr[i];
                    arr[i] = arr[i1];
                    arr[i1] = temp;
                
            
        
    

以上是关于Day562.冒泡排序&选择排序 -数据结构和算法Java的主要内容,如果未能解决你的问题,请参考以下文章

day6 反射,hashlib模块,正则匹配,冒泡,选择,插入排序

数组排序代码,冒泡排序&快速排序&选择排序

排序01---[排序基本知识&&冒泡排序&&选择排序&&堆排序]

冒泡排序&选择排序&插入排序

冒泡排序 & 选择排序(升序)

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)