Java之Algorithm_analysis案例详解

作者:lxj_csdn 时间:2022-03-07 01:34:50 


/*
冒泡排序:双层循环
1.外层循环:控制排序轮数,排序数组长度减1(最后一次循环只剩下一个元素,不需要比较,同时数组已完成排序。

2.内层循环:比较数组临近元素大小,确定是否交换位置,对比和交换次数随排序轮数而减少。
*/

public class BubbleSort {
   public void sort(int[] array){
       for(int i=1;i<array.length;i++){//控制轮数
           //比较相邻两个元素,较大的数往后冒泡
           for(int j=0;j<array.length-i;j++){//控制交换次数
               if(array[j]>array[j+1]){//第一个数大于第二个数,进行交换
                   int temp = array[j];
                   array[j] = array[j+1];
                   array[j+1] = temp;
                   System.out.println("第-------"+j+"-------次");
               }
               System.out.println("第"+i+"轮");
               showArray(array);
           }
       }
       showArray(array);
   }
   /*
   显示数组
    */
   public void showArray(int[] array){
       for(int i:array){//遍历数组
           System.out.print("  》"+i);
       }
       System.out.println();
   }
   public static void  main(String[] args) {
       //创建一个数组,这个数组元素是乱序的
       int[] array = {63,4,24,1,3,15};
       System.out.println("数组长度:"+array.length);
       System.out.println("=========================");
       //创建冒泡排序类对象
       BubbleSort sorter = new BubbleSort();
       //调用排序方法将数组排序
       sorter.sort(array);
   }

显示结果

数组长度:6
=========================
第-------0-------次
第1轮
》4  》63  》24  》1  》3  》15
第-------1-------次
第1轮
》4  》24  》63  》1  》3  》15
第-------2-------次
第1轮
》4  》24  》1  》63  》3  》15
第-------3-------次
第1轮
》4  》24  》1  》3  》63  》15
第-------4-------次
第1轮
》4  》24  》1  》3  》15  》63
第2轮
》4  》24  》1  》3  》15  》63
第-------1-------次
第2轮
》4  》1  》24  》3  》15  》63
第-------2-------次
第2轮
》4  》1  》3  》24  》15  》63
第-------3-------次
第2轮
》4  》1  》3  》15  》24  》63
第-------0-------次
第3轮
》1  》4  》3  》15  》24  》63
第-------1-------次
第3轮
》1  》3  》4  》15  》24  》63
第3轮
》1  》3  》4  》15  》24  》63
第4轮
》1  》3  》4  》15  》24  》63
第4轮
》1  》3  》4  》15  》24  》63
第5轮
》1  》3  》4  》15  》24  》63
》1  》3  》4  》15  》24  》63

/*直接选择排序:指定排序位置与其他元素比较。交换次数减少。*/


public class SelectSort {
   public void sort(int[] array) {
       int index;
       for (int i = 1; i < array.length; i++) {
           index = 0;
           for (int j = 1; j <= array.length - i; j++)
               if (array[j] > array[index]) {
                   index = j;
               }
           //交换位置array.length-i和index(最大值)上的两个数
           int temp = array[array.length-i];
           array[array.length - i] = array[index];
           array[index] = temp;
       }
       showArray(array);
   }
   /*
   显示数组
    */
   public void showArray(int[] array) {
       for (int i : array) {//遍历数组
           System.out.print("  》" + i);
       }
       System.out.println();
   }
   public static void main(String[] args) {
       //创建一个数组,这个数组元素是乱序的
       int[] array = {63, 4, 24, 1, 3, 15};
       System.out.println("数组长度:" + array.length);
       System.out.println("=========================");
       //创建冒泡排序类对象
       SelectSort sorter = new SelectSort();
       //调用排序方法将数组排序
       sorter.sort(array);
   }
}

运行结果:

数组长度:6
=========================
》1  》3  》4  》15  》24  》63

来源:https://blog.csdn.net/lxj_csdn/article/details/82825476

标签:java,Algorithm,analysis
0
投稿

猜你喜欢

  • MyBatis的SQL执行结果和客户端执行结果不一致问题排查

    2022-12-30 20:37:22
  • Java 非阻塞I/O使用方法

    2022-01-01 22:54:57
  • C++实现的O(n)复杂度内查找第K大数算法示例

    2023-06-30 15:51:13
  • Java实现画图 给图片底部添加文字标题

    2023-03-28 23:23:06
  • 详解Java线程-守护线程与用户线程

    2023-11-25 00:17:29
  • Java中的几种读取properties配置文件的方式

    2022-09-06 13:36:19
  • Java超详细分析@Autowired原理

    2023-11-25 05:37:44
  • Java实现按权重随机数

    2023-11-28 23:15:32
  • 浅析Java中如何实现线程之间通信

    2022-08-24 14:28:36
  • SpringBoot+Spring Security+JWT实现RESTful Api权限控制的方法

    2022-07-18 03:38:36
  • Java中的异常和处理机制实例详解

    2022-08-10 06:03:19
  • Flutter状态管理Bloc使用示例详解

    2023-08-24 09:09:10
  • java如何导出insert语句并生成sql脚本

    2022-05-18 10:33:54
  • Spring boot集成Kafka消息中间件代码实例

    2022-11-06 21:53:48
  • Go Java算法之K个重复字符最长子串详解

    2022-02-10 17:53:29
  • 一篇文章带你了解JAVA结构化编程详情

    2022-01-15 13:06:34
  • Java中值类型和引用类型详解

    2023-11-29 00:44:51
  • SpringMVC的执行过程浅析

    2021-05-31 20:51:11
  • springboot+rabbitmq实现智能家居实例详解

    2022-09-05 12:23:39
  • 详解Java 信号量Semaphore

    2021-12-22 11:10:36
  • asp之家 软件编程 m.aspxhome.com