冒泡排序 JAVA版
冒泡排序
算法思想是每次从数组末端开始比较相邻俩元素,把第i小的冒泡到数组的第i个位置。i从0一直到N-1从而完成排序。当然也可以从数组开始端开始比较相邻两元素,把第i大的冒泡到第N-i个位置。I从0一直到N-1从而完成排序。
publicabstractclass Sorter<E extends Comparable<E>> {
publicabstractvoid sort(E[] array,int from ,int len);
publicfinalvoid sort(E[] array)
{
sort(array,0,array.length);
}
protectedfinalvoid swap(E[] array,int from ,int to)
{
E tmp=array[from];
array[from]=array[to];
array[to]=tmp;
}
publicvoid sort(String helloString, int from, int len) {
// TODO Auto-generated method stub
}
}
publicclass BubbleSorter<E extends Comparable<E>> extends Sorter<E> {
privatestaticbooleanDOWN=false;
publicfinalvoid bubble_down(E[] array, int from, int len){
for(int i=from;i<from+len;i++){
for(int j=from+len-1;j>i;j--){
if(array[j].compareTo(array[j-1])<0){
swap(array,j-1,j);
}
}
}
}
publicfinalvoid bubble_up(E[] array, int from, int len){
for(int i=from+len-1;i>=from;i--){
for(int j=from;j<i;j++){
if(array[j].compareTo(array[j+1])<0){
swap(array,j,j+1);
}
}
}
}
@Override
publicvoid sort(E[] array, int from, int len) {
// TODO Auto-generated method stub
if(DOWN){
bubble_down(array,from,len);
}else{
bubble_up(array,from,len);
}
}
publicstaticvoid main(String[] args){
BubbleSorter s1 = new BubbleSorter<String>();
String[] myStringArray1 = {"2","5","1","9","4"};
for(int i=0;i<5;i++){
System.out.println(myStringArray1[i]);
}
s1.sort(myStringArray1, 0, 5);
for(int i=0;i<5;i++){
System.out.println(myStringArray1[i]);
}
}
}
Output:
冒泡排序 JAVA版的更多相关文章
- 冒泡排序Java版
package dataStructureAlgorithmReview.day01; import java.util.Arrays; /** * 冒泡 * @author shundong * * ...
- 经典算法冒泡排序java版
写个冒泡排序吧 冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序. public class BubbleSort{ public int[] bubbleS ...
- Java版冒泡排序和选择排序
一.理解说明 1.理解和记忆 冒泡排序:依次定位数组元素,每次只和相邻的且符合条件的元素交换位置. 选择排序:依次在数组的每个位置,通过逐个对比选择出最大或最小的元素. 2.知识点说明 (1)数组是引 ...
- 常见排序算法总结(java版)
一.冒泡排序 1.原理:相邻元素两两比较,大的往后放.第一次完毕,最大值在最大索引处. 即使用相邻的两个元素一次比价,依次将最大的数放到最后. 2.代码: public static void bub ...
- 内部排序比较(Java版)
内部排序比较(Java版) 2017-06-21 目录 1 三种基本排序算法1.1 插入排序1.2 交换排序(冒泡)1.3 选择排序(简单)2 比较3 补充3.1 快速排序3.2 什么是桶排序3.3 ...
- 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题
常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
- 《算法导论》第二章demo代码实现(Java版)
<算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...
- ArcGIS Server 10 Java 版的Rest服务手动配置方法
Java版的Manager中发布的服务默认只发布了该服务的SOAP接口,而REST接口需要用户在信息服务器,如Tomcat. Apache.WebLogic等中手工配置.由于在Java版的Server ...
随机推荐
- CentOS 6.2 二进制安装apache2.4.3出现configure: error: APR-util not found. Please read the documentation的解决方
CentOS 6.2 二进制安装apache2.4.3出现configure: error: APR-util not found. Please read the documentation的解决方 ...
- Android 它们的定义View它BounceProgressBar
转载请注明出处:http://blog.csdn.net/bbld_/article/details/41246247 [Rocko's blog] 之前几天下载了非常久没用了的桌面版酷狗来用用的时候 ...
- jquery mobile左右滑动切换页面
jquery mobile左右滑动切换页面 $(function() {$("body").bind('swiperight', function() { $.mobile.ch ...
- WEB应用如何解决安全退出问题
让我先来描述一下这个情况.一位用户第一次请求一个web页面,web应用弹出登录窗口提示用户登录,用户输入用户名,密码,验证码后服务器进行判断,正确后,返回用户请求的页面. 此时,用户有事需要离 ...
- 网页调试技巧:抓取马上跳转的页面POST信息或者页面内容
http://www.qs5.org/Post/625.html 网页调试技巧:抓取马上跳转的页面POST信息或者页面内容 2016/02/02 | 心得分享 | 0 Replies 有时候调试网页或 ...
- QT中.pro文件的写法
QT中.pro文件的写法 qmake 变量 含义 #xxxx 注释, 从“#”开始,到这一行结束 SOURCES 指定源文件 SOURCES = *.cpp 对于多源文件,可用空格分开 SOURC ...
- 俄罗斯方块SDK版
前言 本来可以从俄罗斯方块控制台版改一版, 将UI接口换掉, 变成SDK版. 正好放假了, 有时间. 就用了一个星期来重头做一个新版, 享受一下静下心来, 有条不紊干活的感觉^_^ 这个工程用来验证S ...
- Storm流计算从入门到精通之技术篇(高并发策略、批处理事务、Trident精解、运维监控、企业场景)
1.Storm全面.系统.深入讲解,采用最新的稳定版本Storm 0.9.0.1 : 2.注重实践,对较抽象难懂的技术点如Grouping策略.并发度及线程安全.批处理事务.DRPC.Storm ...
- Swift - 内存泄露原因(循环强引用)及解决办法
Swift使用自动引用计数(ARC)来管理应用程序的内存使用.在大多是情况下,并不需要考虑内存的管理.当实例不再需要的时候,ARC会自动释放这些实例所使用的内存. 但ARC并不是绝对安全的.下面两种情 ...
- asp.net笔试题
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...