zoukankan      html  css  js  c++  java
  • 排序算法冒泡排序

    思路:

    1.每一趟,交换相邻两个数,前一个数大的(小的)往后放,一趟下来,最大(小)的数放在了最后。

    2.持续进行,直到所有的数都排序完。

    3.优化:如果有一趟没有任何交换,说明已经排序完了。

    for(int i=0;i<len;i++)

    for(int j=0;j<len-i-1;j++):此处-i是因为最后的数已经放好了,-1是因为后面使用了a[j+1]避免越界。

    public class BubbleSort {
        @Test
        public void test(){
            int[] a = {1,2,5,8,3,4,6,9,7};
            sort(a);
            System.out.println(Arrays.toString(a));
        }
        public void sort(int[] a){
            // 优化:使用boolean判断是否交换:如果一趟没有交换退出循环
            boolean isChange = false;
            for(int i=0; i<a.length; i++){
                isChange = false;
                for(int j=0; j<a.length-i-1; j++){
                    if(a[j]>a[j+1]){
                        a[j+1] += a[j];
                        a[j] = a[j+1]-a[j];
                        a[j+1] -= a[j];
                        isChange = true;
                    }
                }
                // 没有改变顺序:退出即可
                if(!isChange){
                    break;
                }
            }
        }
    }
  • 相关阅读:
    梯度下降法
    超平面
    感知机模型
    三角不等式
    统计学习方法基本概念
    Kaggle 的注册和使用
    win10 部署 Anaconda
    全概率和贝叶斯公式
    行列式
    伴随矩阵
  • 原文地址:https://www.cnblogs.com/wsZzz1997/p/14731598.html
Copyright © 2011-2022 走看看