java 数据结构 冒泡排序实现代码
冒泡(Bubble Sort)排序的基本思想是:将待排序的数组看作从上倒下排列,把关键字较小的记录看作较轻的,关键字较大的看作较重的,较小的关键字的值看作是水中的气泡向上浮,较大的关键字如水中的石块向下沉,当气泡都浮到相应的位置的时候排序结束.
算法性能分析
(1) 时间复杂素。总的一定此次数为3/2(n-1)*n
(2) 空间复杂度。仅用了一个辅助单元空间复杂度为O(1)
(3) 算法的稳定性。冒泡排序是一种稳定的排序算法
/* * Kiss_My_Love * 2012/8/20 * 冒泡排序 **/ public static Object[] bubbleSort(Object []sort){ for(int i=1;i<sort.length;i++){ for(int j=0;j<sort.length-i;j++){ if((Integer)sort[j]>(Integer)sort[j+1]){ Object temp=sort[j]; sort[j]=sort[j+1]; sort[j+1]=temp; } } } return sort; }
谢谢大家的阅读本文,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
Java模拟栈和队列数据结构的基本示例讲解
栈和队列: 一般是作为程序员的工具,用于辅助构思算法,生命周期较短,运行时才被创建: 访问受限,在特定时刻,只有一个数据可被读取或删除: 是一种抽象的结构,内部的实现机制,对用户不可见,比如用数组.链表来实现栈. 模拟栈结构 同时,只允许一个数据被访问,后进先出 对于入栈和出栈的时间复杂度都为O(1),即不依赖栈内数据项的个数,操作比较快 例,使用数组作为栈的存储结构 public class StackS<T> { private int max; private T[] ary; priv
-
java 数据结构二叉树的实现代码
1. 二叉树接口 public interface BinaryTreeInterface<T> { public T getRootData(); public int getHeight(); public int getNumberOfRoot(); public void clear(); public void setTree(T rootData); // 用rootData设置树 public void setTree(T rootData,BinaryTreeInterface
-
用Java代码实现栈数据结构的基本方法归纳
链式实现: 在栈的一段添加和删除元素,在栈中维护一个指向栈顶的结点和一个count变量指示栈的大小: private LinearNode top; //指向栈顶 private int count;//标记栈的大小 每次出栈和压栈在链表的表头:(也可以再表尾,实现方式不一样而已) top--->元素1--->元素2--->元素3......... 实现(附带测试main): LinkedStack package Stack; import Bag.LinearNode; //为了重点
-
Java数据结构及算法实例:选择排序 Selection Sort
/** * 选择排序的思想: * 每次从待排序列中找到最小的元素, * 然后将其放到待排的序列的最左边,直到所有元素有序 * * 选择排序改进了冒泡排序,将交换次数从O(N^2)减少到O(N) * 不过比较次数还是O(N) */ package al; public class SelectSort { public static void main(String[] args) { SelectSort selectSort = new SelectSort(); int[] elements
-
浅谈Java中常用数据结构的实现类 Collection和Map
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个C
-
剖析Java中HashMap数据结构的源码及其性能优化
存储结构 首先,HashMap是基于哈希表存储的.它内部有一个数组,当元素要存储的时候,先计算其key的哈希值,根据哈希值找到元素在数组中对应的下标.如果这个位置没有元素,就直接把当前元素放进去,如果有元素了(这里记为A),就把当前元素链接到元素A的前面,然后把当前元素放入数组中.所以在Hashmap中,数组其实保存的是链表的首节点.下面是百度百科的一张图: 如上图,每个元素是一个Entry对象,在其中保存了元素的key和value,还有一个指针可用于指向下一个对象.所有哈希值相同的key(也就
-
java数据结构与算法之双向循环队列的数组实现方法
本文实例讲述了java数据结构与算法之双向循环队列的数组实现方法.分享给大家供大家参考,具体如下: 需要说明的是此算法我并没有测试过,这里给出的相当于伪代码的算法思想,所以只能用来作为参考! package source; public class Deque { private int maxSize; private int left; private int right; private int nItems; private long[] myDeque; //constructor p
-
java数据结构与算法之插入算法实现数值排序示例
本文实例讲述了java数据结构与算法之插入算法实现数值排序.分享给大家供大家参考,具体如下: 写在这里做个纪念,关键是要理解插入点,在插入点,初始的in和out都在这个插入点,然后通过in自减对数组进行重新排序 public static void insertSort(){ for(int out=1; out<a.length; out++){ int temp = a[out]; int in = out; while(in>0&& a[in-1]>temp){ a
-
Java中二叉树数据结构的实现示例
来看一个具体的习题实践: 题目 根据二叉树前序遍历序列例如:7,-7,8,#,#,-3,6,#,9,#,#,#,-5,#,#,构建二叉树,并且用前序.中序.后序进行遍历 代码 import java.util.Scanner; public class BinaryTree { public static String[] str; public static int count; /** * 静态内部类,定义二叉树节点 */ static class TreeNode { public Str
-
java 数据结构 冒泡排序实现代码
冒泡(Bubble Sort)排序的基本思想是:将待排序的数组看作从上倒下排列,把关键字较小的记录看作较轻的,关键字较大的看作较重的,较小的关键字的值看作是水中的气泡向上浮,较大的关键字如水中的石块向下沉,当气泡都浮到相应的位置的时候排序结束. 算法性能分析 (1) 时间复杂素.总的一定此次数为3/2(n-1)*n (2) 空间复杂度.仅用了一个辅助单元空间复杂度为O(1) (3) 算法的稳定性.冒泡排序是一种稳定的排序算法 /* * Kiss_My_Love *
-
java数据结构与算法之冒泡排序详解
本文实例讲述了java数据结构与算法之冒泡排序.分享给大家供大家参考,具体如下: 前面文章讲述的排序算法都是基于插入类的排序,这篇文章开始介绍交换类的排序算法,即:冒泡排序.快速排序(冒泡排序的改进). 交换类的算法:通过交换逆序元素进行排序的方法. 冒泡排序:反复扫描待排序记录序列,在扫描的过程中,顺次比较相邻的两个元素的大小,若逆序就交换位置. 算法实现代码如下: package exp_sort; public class BubbleSort { public static void b
-
Java数据结构和算法之冒泡排序(动力节点Java学院整理)
冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序算法的运作如下: 1. 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3. 针对所有
-
java List 排序之冒泡排序实例代码
java List 排序之冒泡排序实例代码 List排序,这里介绍两种排序: 1.Collections.sort()排序: 假如List集合中放的是Menu对象. public class Menu{ private int id; private String name; private int seq;//自定义排序字段 //构造函数.getter.setter省略....... } List<Menu> menus=new ArrayList<Menu>(); menus.
-
java数据结构之树基本概念解析及代码示例
Java中树的存储结构实现 一.树 树与线性表.栈.队列等线性结构不同,树是一...节点与节点之间的父子关系,可以为每个节点增加一个parent域,用以记录该节点的父点 树是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点组成一个具有层次关系的集合.把 它叫做"树"是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的. 树定义和基本术语 定义 树(Tree)是n(n≥0)个结点的有限集T,并且当
-
Java算法之冒泡排序实例代码
java算法-冒泡排序练习 所谓冒泡就是一堆数据相邻的互相比较,把大的数据往后移,小的数据往前移. 百度上找了张图 大家自己想一想这个逻辑 想明白了,直接看代码. public class Two { public static void main(String[] args) { int arg[] = {25,36,15,274}; sort(arg); } private static void sort(int[] array) { for (int j = 1; j < array.l
-
JAVA数据结构之汉诺塔代码实例
本文实例为大家分享了JAVA数据结构之汉诺塔的具体代码,供大家参考,具体内容如下 package p02.动态链表; import p01.动态数组.Stack; public class LinkedStack<E> implements Stack<E> { private LinkedList<E> list; public LinkedStack(){ list=new LinkedList<>(); } @Override public void
-
java数组算法例题代码详解(冒泡排序,选择排序,找最大值、最小值,添加、删除元素等)
数组算法例题 1.数组逆序 第一个和最后一个互换,第二个和倒数第二个互换,就相当于把数组想下图一样,进行对折互换,如果数组个数为奇数,则中间保持不变其余元素互换即可 import java.util.Arrays; class Demo12 { public static void main (String[] args) { int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; System.out.println(Arrays.toString(arr));
-
Java数据结构之KMP算法详解以及代码实现
目录 暴力匹配算法(Brute-Force,BF) 概念和原理 next数组 KMP匹配 KMP全匹配 总结 我们此前学了前缀树Trie的实现原理以及Java代码的实现.Trie树很好,但是它只能基于前缀匹配实现功能.但是如果我们的需求是:一个已知字符串中查找子串,并且子串并不一定符合前缀匹配,那么此时Trie树就无能为力了. 实际上这种字符串匹配的需求,在开发中非常常见,例如判断一个字符串是否包括某些子串,然后进行分别的处理. 暴力匹配算法(Brute-Force,BF) 这是最常见的算法字符
-
JAVA 数据结构之Queue处理实例代码
java Queue处理 实例代码: import java.util.LinkedList; import java.util.Queue; private static Queue<FrameStruct> frameQueue = new LinkedList<FrameStruct>(); private static Lock lock = new ReentrantLock(); private PlayerThread p = new PlayerThread();
随机推荐
- Windows2008初次体验的几个心得图文
- 基于jQuery的select下拉框选择触发事件实例分析
- java 多线程的同步几种方法
- iOS中指纹识别常见问题汇总
- Asp.net GridView使用大全(分页实现)
- 简单谈谈JS中的正则表达式
- 基于JS实现导航条之调用网页助手小精灵的方法
- php接口和抽象类使用示例详解
- shell脚本实现批量测试局域网主机是否在线
- 深入PHP操作MongoDB的技术总结
- Python处理XML格式数据的方法详解
- C#运算符大全_各种运算符号的概述及作用
- 详解 Mysql查询结果顺序按 in() 中ID 的顺序排列
- 使用CSS不用程序实现文字自动截断 用省略号代替
- Linux下源码编译安装配置SVN服务器的步骤分享
- jQuery实现简单的tab标签页效果
- jQuery基础知识点总结(必看)
- JavaScript实现三级联动效果
- 深入PHP magic quotes的详解
- 在ASP.NET 2.0中操作数据之三十三:基于DataList和Repeater使用DropDownList过滤的主/从报表