这一章主要复习下以前所接触的算法,

(1)选择排序法:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

 /**
      * 选择排序算法 在未排序序列中找到最小元素,存放到排序序列的起始位置
      * 再从剩余未排序元素中继续寻找最小元素,然后放到前面已排序序列末尾。
      * 以此类推,直到所有元素均排序完毕。
      *
      * @param numbers
      */
     public static void selectSort(int[] numbers) {
         int size = numbers.length; // 数组长度
         ; // 中间变量

         ; i < size-; i++) {//i代表最后排好顺序的index
             int k = i; // 待确定的位置
             // 选择出应该在第i个位置的数
             ; j > i; j--) {
                 if (numbers[j] < numbers[k]) {
                     k = j;//只要后面的数要比待确定位上的数小,就往前挪到k对应位置
1819                 }
             }
             // 交换两个数
             temp = numbers[i];
             numbers[i] = numbers[k];
             numbers[k] = temp;
         }
     }

(2)冒泡排序法:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
有重泡下沉和轻泡上浮两种形式:

重泡下沉:

public static void bubbleSort(int[] ary) {
        ; i < ary.length - ; i++) {
            ; j < ary.length - i - ; j++) {
                ]) {
                    int t = ary[j];
                    ary[j] = ary[j + ];
                    ary[j + ] = t;
                }
            }
        }
    }

轻泡上浮:

public static void bubbleSort(int[] ary) {
        ; i < ary.length - ; i++) {
            ; j > ; j--) {
                ]) {
                    int t = ary[j];
                    ary[j] = ary[j - ];
                    ary[j - ] = t;
                }
            }
        }
    }

(3)插入排序:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。

 public static void insertSort(int[] ary){
         int i,j,k;
         ; i<ary.length; i++){
             k = ary[i];//step1,先取出作为判断标准
             ; j>= && ary[j]>k; j--){
                 ary[j+] = ary[j];//step2,移动a[j]-->a[j+1]
             }
             ary[j+] = k;//step3,插入,
         }
     }

其他算法请参考:http://www.cnblogs.com/0201zcr/p/4764427.html

http://www.cnblogs.com/sevenyuan/archive/2009/12/04/1616897.html

非常感谢原作者

重拾java系列一java基础(3)的更多相关文章

  1. 重拾java系列一java基础(1)

    前言,不知不觉,从接触java到工作至今已有两年的时间,突然感觉自己的基础知识还很薄弱,有些知识虽然知道,但是停留在表面上,没有深挖,或者实践过,感觉掌握的很肤浅,而且时间一长,就觉得忘记了,我觉得这 ...

  2. 【java系列】java开发环境搭建

    描述 本篇文章主要讲解基于windows 10系统搭建java开发环境,主要内容包括如下: (1)安装资料准备 (2)安装过程讲解 (3)测试是否安装成功 (4)Hello Word测试 1   安装 ...

  3. 重拾java系列一java基础(2)

    1.分支流程控制 if(布尔表达式/分支条件){  //语句块} if(布尔表达式/分支条件){  //语句块1}else{  //语句块2} if(条件1){  //语句块1}else if(条件2 ...

  4. 重拾java系列一java基础(4)

    本章主要回顾一些类的相关知识: (1)static: static 静态的: 属于类的资源, 使用类名访问.  静态属性: 只有一份的变量  静态方法: 是属于类方法, 可以使用类名直接访问. 静态方 ...

  5. java系列(1/4)基础阶段-MySQL(2/13)

    本单元目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停 ...

  6. Java系列: JAVA字符串格式化-String.format()的使用(zz)

    常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重 ...

  7. 重拾Java Web应用的基础体系结构

    目录 一.背景 二.Web应用 2.1 HTML 2.2 HTTP 2.3 URL 2.4 Servlet 2.4.1 编写第一个Servlet程序 2.5 JSP 2.6 容器 2.7 URL映射到 ...

  8. 夯实Java基础系列5:Java文件和Java包结构

    目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java ...

  9. 【Java】 重拾Java入门

    [概论与基本语法] 取这个标题,还是感觉有些大言不惭.之前大三的时候自学过一些基本的java知识,大概到了能独立写一个GUI出来的水平把,不过后来随着有了其他目标,就把这块放下了.之后常年没有用,早就 ...

随机推荐

  1. Hibernate4+Spring JPA+SpringMVC+Volecity搭建web应用(一)

    pom.xml配置 <dependencies> <!-- hibernate begin --> <dependency> <groupId>org. ...

  2. 《JavaScript权威指南》读书笔记(一)

    日期 2015-11-28 把之前的读书笔记在我弄丢它之前搬过来~~ 时间过去好久,回头一看理解都不一样了. 重点浏览了一下和Java的不同之处: js是一种宽松类型语言:js不区别整形数值与浮点型数 ...

  3. Spring事务管理中@Transactional

    最近写的一个消息推送的接口,供订单生成后调用,发现每次传过来的时候订单id是存在的,可是利用订单id去查订单信息做后续操作时发现查不到数据,最终发现是订单生成时候业务处理写在service层,加了Sp ...

  4. c++实现之 -- 汉语词语的简单处理

    好了,我们现在已经会怎样读入了,然后就是研究一下如何存储等一些细节上的的问题了. 首先,比较函数是不能传入char*的地址的,但是可以接受一个string类. 然而,如果是两个比较长的string类, ...

  5. cisco nat

    1.配置端口: int s0/0 ip nat outside                  ;s0/0为外部端口 int f0/0 ip nat inside                   ...

  6. php安装出现的部分错误

    在CentOS编译PHP5的时候有时会遇到以下的一些错误信息,基本上都可以通过yum安装相应的库来解决.以下是具体的一些解决办法: checking for BZip2 support… yes ch ...

  7. 在ASP.NET MVC中使用CKEditor和CkFinder

    在你需要使用editor控件的页面头部添加: <head> ... <script type="text/javascript" src="/ckedi ...

  8. 重写 button 的创建方法

    重写 button 的创建方法 //sxc时时改变 // self.videoM.progress = progress; // if ([self.videoM.downloadStr isEqua ...

  9. 带你揭开ATM的神秘面纱

    相信大家都用过ATM取过money吧,但是有多少人真正是了解ATM的呢?相信除了ATM从业者外了解的人寥寥无几吧,鄙人作为一个从事ATM软件开发的伪专业人士就站在我的角度为大家揭开ATM的神秘面纱吧. ...

  10. bzoj 2143: 飞飞侠

    #include<cstdio> #include<iostream> #include<queue> #define inf 1000000000 #define ...