算法导论Java实现-冒泡排序(思考题2-2)

简介:

 
 
  1. package lhz.algorithm.chapter.two; 
  2. /** 
  3.  * “冒泡排序”,《算法导论》思考题2-2 
  4.  * 伪代码: 
  5.  * BUBBLESORT(A) 
  6.  * 1 for i ← 1 to length[A] 
  7.  * 2 do for j ← length[A] downto i + 1 
  8.  * 3 do if A[j] < A[j - 1] 
  9.  * 4 then exchange A[j] ↔ A[j - 1]  
  10.  * @author lihzh(苦逼coder) 
  11. * 本文地址:http://mushiqianmeng.blog.51cto.com/3970029/733277  
  12. */ 
  13. public class BubbleSort { 
  14.      
  15.     private static int[] input = new int[] { 21549867103 }; 
  16.  
  17.     public static void main(String[] args) { 
  18.         int endIndex = input.length - 1
  19.         for (int i = 0; i < endIndex; i++) {//复杂度:n 
  20.             for (int j = endIndex; j > i; j--) {//复杂度:1+2+...+(n-1)=Θ(n^2) 
  21.                 if (input[j] < input[j-1]) { 
  22.                     int temp = input[j]; 
  23.                     input[j] = input[j-1]; 
  24.                     input[j-1] = temp; 
  25.                 } 
  26.             } 
  27.         } 
  28.         /* 
  29.          * 复杂度分析: 
  30.          * 由上可见冒泡排序的复杂度为:Θ(n^2)。在最佳情况下,虽无需交换,但比较的次数仍为:Θ(n^2)。 
  31.          * 在最佳情况下,复杂度也为Θ(n^2),此时不如插入排序。 
  32.          * 冒泡排序的交换次数也大于插入排序。 
  33.          * 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序。 
  34.          * 尽管这个算法是最简单了解和实作的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的。 
  35.          * 冒泡排序是稳定的。 
  36.          */ 
  37.         //打印数组 
  38.         printArray(); 
  39.     } 
  40.      
  41.     private static void printArray() { 
  42.         for (int i : input) { 
  43.             System.out.print(i + " "); 
  44.         } 
  45.     } 

 




     本文转自mushiqianmeng 51CTO博客,原文链接:http://blog.51cto.com/mushiqianmeng/733277,如需转载请自行联系原作者


相关文章
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
1月前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
28 0
|
23天前
|
存储 算法 Java
Java数据结构与算法-java数据结构与算法(二)
Java数据结构与算法-java数据结构与算法
65 1
|
10天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出&quot;验证成功&quot;,否则输出&quot;验证失败&quot;。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
12天前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序
14 2
|
17天前
|
搜索推荐 Java
Java排序算法
Java排序算法
18 0
|
17天前
|
搜索推荐 Java
Java基础(快速排序算法)
Java基础(快速排序算法)
22 4
|
20天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
32 0
|
23天前
|
XML 存储 算法
Java数据结构与算法-java数据结构与算法(五)
Java数据结构与算法-java数据结构与算法
47 0
|
1月前
|
算法 搜索推荐 Java
利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)
利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)
13 1