三大基础排序算法BubbleSort、SelectSort、InsertSort
public class Strategy {
public static void main(String[] args) {
int [] array=new int[]{26,25,15,42,36,16,12};
IInfo test1=new BubbleSort(); //接口引用指向实现了此接口的类创建的实例,创建具体的策略对象
IInfo test2=new SelectSort();
IInfo test3=new InsertSort();
context cont1=new context(test3);
cont1.sort(array);
cont1.tell(array);
}
}
class context{
private IInfo iinfo=null; // 定义接口的引用变量,可以接收不同的实现类
public context(IInfo iinfo){//参数尽量用抽象的东西,好处:接收外面传入的具体实现类的对象
this.iinfo=iinfo;//动态绑定
}
public void sort(int[] array){
//交给具体接收到的策略类对象来帮忙排序
iinfo.sort(array);
}
public void tell(int [] array){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
interface IInfo{ //抽象的策略,算法责任
public abstract void sort(int [] array);
}
class BubbleSort implements IInfo{//具体的策略,算法具体实现
public void sort(int [] array) {
System.out.println("冒泡排序法:");
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){//每一轮比较的次数为(N-1)-i次
//相邻的两个数比较,小靠前
if(array[j]>array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
}
class SelectSort implements IInfo{//具体的策略,算法具体实现
public void sort(int [] array){
System.out.println("选择排序法:");
int min=0;
for(int i=0;i<array.length-1;i++){
min=i;
for(int j=i+1;j<array.length;j++){
if(array[min]>array[j]){
min=j;
}
}
if(min!=i){
int temp=array[i];
array[i]=array[min];
array[min]=temp;
}
}
}
}
class InsertSort implements IInfo{//具体的策略,算法具体实现
public void sort(int [] array){
System.out.println("插入排序法:");
for(int i=1;i<array.length;i++){
int temp =array[i];
int j=i;//把下标保存起来
while(j>0&&temp<array[j-1]){
array[j]=array[j-1];
j--;
}
array[j]=temp;
}
}
}
三大基础排序算法BubbleSort、SelectSort、InsertSort的更多相关文章
- Java面试宝典系列之基础排序算法
本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...
- php四种基础排序算法的运行时间比较
/** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...
- Java基础系列--基础排序算法
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9082138.html 一.概述 基础排序算法包括:桶排序.冒泡排序.选择排序.插入排序等 ...
- php四种基础排序算法的运行时间比较!
/** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...
- 6种基础排序算法java源码+图文解析[面试宝典]
一.概述 作为一个合格的程序员,算法是必备技能,特此总结6大基础算法.java版强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步:1.思想2.图 ...
- 十大基础排序算法[java源码+动静双图解析+性能分析]
一.概述 作为一个合格的程序员,算法是必备技能,特此总结十大基础排序算法.java版源码实现,强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步: ...
- js--js实现基础排序算法
前言 文本来总结常见的排序算法,通过 JvavScript 来实现 正文 1.冒泡排序 算法思想:比较相邻两个元素的大小,如果第一个比第二个大,就交换它们.从头遍历到尾部,当一轮遍历完后,数组最后一 ...
- ZH奶酪:【数据结构与算法】基础排序算法总结与Python实现
1.冒泡排序(BubbleSort) 介绍:重复的遍历数列,一次比较两个元素,如果他们顺序错误就进行交换. 2016年1月22日总结: 冒泡排序就是比较相邻的两个元素,保证每次遍历最后的元素最大. 排 ...
- C#数据结构与算法系列(十九):选择排序算法(SelectSort)
1.介绍 选择排序算法属于内部排序算法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置达到排序的目的 时间复杂度:O(n^2) 双层for 2.思想 选择排序(select sorti ...
随机推荐
- (转)关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍
AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...
- linux+php+apache web调用python脚本权限问题
lamp : linux + apache + mysql + php 在近期项目中使用 linux + apache + php调用python脚本是出现以下权限问题: build/bdist.li ...
- 【网络编程/C++】修改本机ip地址
昨天学会了编程实现获取本地网卡信息,今天再接再砺学会了修改本机ip地址.其实原理很简单就是用c++调用一下dos命令而已,不得不说,dos命令实在是太强大了,当然听说还有种修改注册表的方法,不过没有试 ...
- C6713的Boot mode
2014年7月23日,终于把困扰我两个月的问题解决了,甚是嗨皮,所以做下记录,以供后人参考之用. 问题描述:我用的片子是TMS320C6713,通过EMIF总线连接的FLASH,此FLASH分为两部分 ...
- dfs 翻棋盘end
#include<iostream> char data[16]; int a[16]; int d[4] = { -4, 1, 4, -1 }; char b[16]; int flag ...
- ViewPager+Fragment实现页面的切换
新知识,新摘要: 效果图:framgent导入包都是v4包下,谨慎导入错误! 首先设置viewPager布局: <?xml version="1.0" encoding=&q ...
- centos分区
/boot :用来存放与 Linux 系统启动有关的程序,比如启动引导装载程序等,建议大小为 100MB . /usr :用来存放 Linux 系统中的应用程序,其相关数据较多,建议大于 3GB 以上 ...
- search 搜索
hosts文件路径 C:/WINDOWS/system32/drivers/etc/hosts host tnsnames.ora文件路径 C:/oraclexe/app/oracle/product ...
- linux下驱动webcam
linux自带驱动只支持一些型号的camera,具体型号见http://www.ideasonboard.org/uvc/ 所以有些购买的webcam不能够在linux中被点亮,而且有些厂家只为了在W ...
- svg path详解
svg的<path>标签具有强大的功能,主要包括以下命令 M(move to) 参数:x,y L(line to) 参数:x,y H 参数:x V 参数:y C S Q T Z 参考: