四种排序:冒泡,选择,插入,二分(折半插入)

public class Test{
// public static void main(String[] args) {
// Test t=new Test();
public static void bubbleSort(int[] source){
// 交换类排序思想: 两两比较待排序的关键字,发现记录相反则交换,直到没有反序的记录。
for(int i = source.length - 1; i > 0; i--){
for(int j = 0; j < i; j++){
if(source[j] > source[j + 1]){
swap(source, j, j+1);
}
}
}
} public static void selectSort(int[] source){
// 选择类排序思想:首先在未排序的序列中找到最小元素,存放到排序序列的起始位置,
// 然后再从剩余未排序的元素中找到下一个最小元素,放到已排序序列的末尾。
for (int i = 0; i < source.length; i++){
for (int j = i+1; j < source.length; j++){
if (source[j] > source[i]){
swap(source, i, j);
}
}
} }
// 从第一个元素开始,该元素可以认为已经被元素
// 取出下一个元素,在已经拍序的元素中从后往前扫描,如果该元素大于新一个,则将该元素移到下一个
public static void insertSort(int[] source){
for (int i = 1; i < source.length; i++){
for (int j = i ; (j > 0) && (source[j] < source[j - 1]); j--){
swap(source, j, j-1);
} }
}
public static void halfSort(int[] source){
// 二分查找(折半插入)排序思想: 对于第j个元素而言,前面j-1个元素已经有序。
//在有序的队列里面先折半查找出待插入的位置,再统一后移。最后插入要插入的元素。
int temp, low, high, mid;
for (int i =1; i<10; i++){
temp = source[i];
low = 0;
high = i-1;
while (low <= high){
mid = (low + high) / 2;
if (source[mid] > temp)
high = mid - 1;
else
low = mid + 1;
}
for (int j = i+1; j > high; j--){
source[j+1] = source[j];
}
source[high+1] = temp;
}
} private static void swap(int[] source, int x, int y){
int temp = source[x];
source[x] = source[y];
source[y] = temp;
} public static void main(String[] args){
int[] a = {4, 2, 1, 3, 4, 6, 7, 8, 0};
int i;
bubbleSort(a);
for (i = 0;i<a.length;i++){
System.out.printf("%d ", a[i]);
}
}
}

  

  

Java四种排序:冒泡,选择,插入,二分(折半插入)的更多相关文章

  1. golang实现四种排序(快速,冒泡,插入,选择)

    本文系转载 原文地址: http://www.limerence2017.com/2019/06/29/golang07/ 前面已经介绍golang基本的语法和容器了,这一篇文章用golang实现四种 ...

  2. AJPFX关于Java中运用数组的四种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法.快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现.冒泡法是运用遍历数组进行比 ...

  3. python 数据结构与算法之排序(冒泡,选择,插入)

    目录 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 数据结构与算法: 算法: 数据结构 冒泡排序法 选择排序法 插入排序法 数据结构与算法之排序(冒泡,选择,插入) 为什么学习 ...

  4. 【C++】四种排序算法的时间比较

    四种排序算法的时间比较 [注]clock函数对输入(用户输入)元素N排序的计时 #include<iostream> #include<time.h> using namesp ...

  5. java四种数组排序

    数组的四种排序 1.快速排序法Arrays.sort(); 用法1.sort(byte[] a)      对指定的 byte 型数组按数字升序进行排序. sort(byte[] a, int fro ...

  6. Pascal、VB、C#、Java四种语法对照表

    因为工作原因,自学会了vb后陆续接触了其它语言,在工作中经常需要与各家使用不同语言公司的开发人员做程序对接,初期特别需要一个各种语法的对照比,翻看了网络上已有高人做了整理,自己在他基础上也整理了一下, ...

  7. 线程池是什么?Java四种线程池的使用介绍

    使用线程池的好处有很多,比如节省系统资源的开销,节省创建和销毁线程的时间等,当我们需要处理的任务较多时,就可以使用线程池,可能还有很多用户不知道Java线程池如何使用?下面小编给大家分享Java四种线 ...

  8. java四种引用与回调函数

    JAVA四种引用 java对象的引用包括: 强引用 软引用 弱引用 虚引用 Java中提供这四种引用类型主要有两个目的: 第一是可以让程序员通过代码的方式决定某些对象的生命周期: 第二是有利于JVM进 ...

  9. Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor

    介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异步任务你还只是如下new T ...

随机推荐

  1. WebApi的过滤器

    代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System ...

  2. 在threejs中对3D物体旋转的思考

    今天在写threejs时,突然想到一个问题:一个3D物体需要旋转时,一般情况下简单的旋转我都是使用欧拉角,稍微复杂一些的情况我会把欧拉角转换成四元数进行旋转(欧拉角复杂旋转可能会产生的死锁问题),但是 ...

  3. webstorm安装配置

    1.webstorm是一款优秀的前端设计工具,在官网下载webstorm.exe文件 官网地址:http://www.jetbrains.com/webstorm/ 2.一直next执行下一步进行安装 ...

  4. otool

    一.简介   二.实例 1)查看动态链接库 otool -L /usr/bin/vim

  5. slam14讲证明构成李代数

  6. 大数加法java版

    import java.util.*; import java.math.BigDecimal; public class Numadd{ public static void main(String ...

  7. (O)jquery:e.target和this的区别(如何使事件委托后,被选元素的子元素不被选中)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. Ubuntu 双网卡设置

    闲话不多说,直接正题 因为chinanet信号不强,所以买了个usb无线网卡,平常又要做开发,要连着开发板,不知怎么回事,一旦自带无线网卡连上内网的无线路由,就不能访问外网了. 网上搜了好久,终于查到 ...

  9. Autofs

    1. Introduction autofs is a program for automatically mounting directories on an as-needed basis. Au ...

  10. Python 常用模块之re 正则表达式的使用

    re模块用来使用正则表达式.正则表达式用来对字符串进行搜索的工作.我们最应该掌握正则表达式的查询,更改,删除的功能.特别是做爬虫的时候,re模块就显得格外重要. 1.查询 import re a = ...