zoukankan      html  css  js  c++  java
  • 排序问题

    一、冒泡排序:(Bubble Sort),是一种计算机科学领域的较简单的排序算法

    • 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
      这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
       1     //定义冒泡排序方法
       2     public static int[] Bubble_sort(int[] arry_int) {
       3         int lenth=arry_int.length;
       4         //外层循环
       5         for (int i=0;i<lenth;i++) {
       6             //内层循环
       7             for(int j=0;j<lenth-i-1;j++) {
       8                 //判断相邻两个数是大小
       9                 if(arry_int[j]>arry_int[j+1]) {
      10                     //如果前者比后者大 定义临时变量替换两者的值
      11                     int temp = arry_int[j+1];
      12                     arry_int[j+1]=arry_int[j];
      13                     arry_int[j]=temp;
      14                 }
      15             }
      16         }
      17         
      18         
      19         return arry_int;
      20     }
    • 以上是个人写的冒泡排序方法 总结来说,有两个地方需要注意,双层嵌套循环中 内层循环需要注意 用外层循环的便利来做限制 会使得循环册数减少一半,提高效率,还有一个是需要注意,因为内层循环涉及到小标+1 需要注意不要数组越界  否则会导致程序报错。
     1 //定义选择排序
     2     public static int[] Selection_sort(int[] arry_int) {
     3         int lenth=arry_int.length;
     4         int temp=0;
     5         int temp_arry=0;
     6         //定义外层循环
     7         for(int j=0;j<lenth;j++) {
     8             //定义临时变量 存储循环中的最小值
     9             temp=arry_int[j];
    10             //定义临时变量 存储最小值下标
    11             temp_arry=j;
    12             //定义内层循环
    13             for(int i=j;i<lenth-1;i++) {
    14                 //循环中比对 当前值是否比下一个值小
    15                 if(temp>arry_int[i+1]) {
    16                     //如果当前值小 则把树枝存储在临时变量 并且记录下标
    17                     temp_arry=i+1;
    18                     temp=arry_int[i+1];
    19                 }
    20             }
    21             //通过临时变量 替换数组的数据
    22             arry_int[temp_arry]=arry_int[j];
    23             arry_int[j]=temp;            
    24         }        
    25         return arry_int; 
    26     }
    • 需要注意的是 每次循环拿到最小值   然后把最小值存储在临时变量  通过一次遍历之后,把最小值拿到 ,然后替换到数组  第二次遍历时,要把已经有序的过滤掉,我这边使用的方法是把外层循环的值作为内层循环的初始值,这样的话,就可过滤掉之前有序的数组
  • 相关阅读:
    Python进程、线程
    Maven项目的坐标GroupId和ArtifactId
    java中的变量
    java中new一个对象的执行过程及类的加载顺序
    java中string和int互相转化
    什么是设计模式?
    Mybatis解决了JDBC编程哪些问题
    SQL注入、占位符拼接符
    JDBC、事务和连接池
    关于Spring配置文件xml文档的schema约束
  • 原文地址:https://www.cnblogs.com/hebin-pc/p/13913535.html
Copyright © 2011-2022 走看看