美文网首页
冒泡排序与选择排序

冒泡排序与选择排序

作者: webcode | 来源:发表于2018-12-07 15:43 被阅读0次

冒泡排序

冒泡排序原理:比较相邻的元素,较小的放到前面,较大的放到后面

要理解冒泡排序首先要理解两个元素互换

例如

int a = 10;
int b = 20;

如何才能让a = 20;b = 10;如下代码是不能实现的

int a = 10;
int b = 20;
a = b;//首先b = 20;然后把b的值赋值给a,所以a = 20;
b = a;//这是a = 20; 然后把a的值20赋值给b。这个时候b的值也是20

思考:如果家里有两个瓶子,1号瓶子装水,2号瓶子装油,那么如何才能让1号瓶子装油,2号瓶子装水
解答:再找一个3号空瓶子,首先把1号瓶子的水倒入3号瓶子,把2号瓶子的油倒入1号瓶子,最后吧3号瓶子的水倒入2号瓶子;这样是不是就完成了互换了
所以

int a = 10;
int b = 20;
int c;
c = a; 
a = b;
b = c

-冒泡排序的每一次内层循环都会找到最小值

/**
     * 冒泡排序
     * @param args
     * 
     * 6,2,4,1,5,9
     * 第一次排序:
     *  2,4,1,5,6,9 5
     * 1    5
     * 二次
     * 2,1,4,5,6, 9  4
     * 
     * 2    4
     * 三次
     * 1,2,4,5          3
     * 3    3
     * 
     * 4    3
     * 
     * 五次
     * 5    1               
     *   
     * 
     *  第一次排序:结果就是找到最大值
     * 2            第2
     * 3            3
     * ……
     * 5            5
     * 
     * 
     * 
     * 5,4,3,2,1
     * 1    
     * 4,3,2,1,5
     * 
     * 2
     * 3,2,1,4,5
     * 
     * 3
     * 2,1,3,4,5
     * 
     * 4
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int [] arr = new int[]{5,4,3,2,1};
        
//      外层循环是排序的次数 (i+1)
        for(int i = 0; i < arr.length - 1; i ++){
            //内层循环,相当于排序一次
//                  j = 0  j =4    j < 5
            for(int j = 0; j < arr.length - 1 - i; j ++){
//              实现的就是相邻元素进行比较,大的放到后面,小的放到前面
                if(arr[j] > arr[j+1]){
//                  交换位置
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        
        
        for(int i = 0; i < arr.length; i ++){
            System.out.print(arr[i]+"\t");
        }
    }

选择排序

选择排序的基本思想是将指定的排序位置与其他数组元素分别对比,如果满足条件就交换元素值

image.png
public static void main(String[] args){
        int arr[] = {6,5,4,3,2,1,0};
        /**
         * 第一次拿下标为0的和后面的元素依次进行比较
         * 1,6,5,2,4,9
         * 
         * 继续拿下标为1
         * 1 ,2,6,5
         * 
         * 继续拿下标为2
         * 
         * 继续拿下标为4 =   arr.length -2
         */
        for(int i = 0; i < arr.length - 1; i ++){
            for(int j = i + 1; j < arr.length; j ++){
                if(arr[i] > arr[j]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;      
                }
            }
        }
        
        /**
         * 数组名[下标]
         */
        for(int i=0;i<arr.length; i++){
            System.out.print(arr[i]+"\t");
        }

如果明白了,请赞赏,1分也是爱。
如果还是不理解,看来需要视频讲解以及面对面一对一讲解了(视频+源码 5元)
联系方式QQ:1718202383
可接应届毕业生论文项目
可接外包项目


image.png

相关文章

  • 简单算法之冒泡与选择排序

    冒泡排序 选择排序 冒泡排序与选择排序的时间复杂度是相同的,选择排序更像是冒泡排序的一半,注意两种排序排列方向问题

  • 常用的两种排序-冒泡、选择

    Swift版 冒泡排序 选择排序 OC版 冒泡排序 选择排序

  • php常用算法汇总

    排序 1.冒泡排序 遍历数组依次比较对换。 2.选择排序 选择排序与冒泡排序类似,区别在于冒泡是每次都对换位置;选...

  • OC中的排序算法

    目录 冒泡排序、快速排序、选择排序、插入排序 冒泡 快排 选择 插入

  • 排序 -- 选择/插入

    聊聊排序吧 冒泡排序 选择排序 插入排序 快速排序 归并排序 计数排序 桶排序 堆排序 本篇 选择排序与插入排序 ...

  • 记录几个常见的排序算法

    常见的排序有:快速排序、冒泡排序、希尔排序、选择排序、插入排序、归并排序 冒泡排序: 插入排序: 选择排序: 希尔...

  • 数组排序问题(一)

    目录 冒泡排序 选择排序 插入排序 归并排序 小和问题 逆序对问题 冒泡排序 冒泡排序的思路:每一个数与自己后面的...

  • 排序

    冒泡排序: 冒泡排序 选择排序: 插入排序: 希尔排序: 归并排序: 快速排序: 堆排序: 计数排序: 桶排序: ...

  • dailyLearning -- 排序算法

    目录: 冒泡排序 快速排序 选择排序 插入排序 归并排序 冒泡排序 冒泡排序(Bubble Sort),是一种计算...

  • JavaScript实现排序算法

    实现了冒泡,选择,插入,快排,希尔,归并 冒泡排序 选择排序 插入排序 快速排序 希尔排序 归并排序

网友评论

      本文标题:冒泡排序与选择排序

      本文链接:https://www.haomeiwen.com/subject/mwbthqtx.html