Java四种排序:冒泡,选择,插入,二分(折半插入)
四种排序:冒泡,选择,插入,二分(折半插入)
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四种排序:冒泡,选择,插入,二分(折半插入)的更多相关文章
- golang实现四种排序(快速,冒泡,插入,选择)
本文系转载 原文地址: http://www.limerence2017.com/2019/06/29/golang07/ 前面已经介绍golang基本的语法和容器了,这一篇文章用golang实现四种 ...
- AJPFX关于Java中运用数组的四种排序方法
JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法.快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现.冒泡法是运用遍历数组进行比 ...
- python 数据结构与算法之排序(冒泡,选择,插入)
目录 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 数据结构与算法: 算法: 数据结构 冒泡排序法 选择排序法 插入排序法 数据结构与算法之排序(冒泡,选择,插入) 为什么学习 ...
- 【C++】四种排序算法的时间比较
四种排序算法的时间比较 [注]clock函数对输入(用户输入)元素N排序的计时 #include<iostream> #include<time.h> using namesp ...
- java四种数组排序
数组的四种排序 1.快速排序法Arrays.sort(); 用法1.sort(byte[] a) 对指定的 byte 型数组按数字升序进行排序. sort(byte[] a, int fro ...
- Pascal、VB、C#、Java四种语法对照表
因为工作原因,自学会了vb后陆续接触了其它语言,在工作中经常需要与各家使用不同语言公司的开发人员做程序对接,初期特别需要一个各种语法的对照比,翻看了网络上已有高人做了整理,自己在他基础上也整理了一下, ...
- 线程池是什么?Java四种线程池的使用介绍
使用线程池的好处有很多,比如节省系统资源的开销,节省创建和销毁线程的时间等,当我们需要处理的任务较多时,就可以使用线程池,可能还有很多用户不知道Java线程池如何使用?下面小编给大家分享Java四种线 ...
- java四种引用与回调函数
JAVA四种引用 java对象的引用包括: 强引用 软引用 弱引用 虚引用 Java中提供这四种引用类型主要有两个目的: 第一是可以让程序员通过代码的方式决定某些对象的生命周期: 第二是有利于JVM进 ...
- Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异步任务你还只是如下new T ...
随机推荐
- [leetcode]449. Serialize and Deserialize BST序列化与反序列化BST
Serialization is the process of converting a data structure or object into a sequence of bits so tha ...
- Jquery的Ajax中contentType和dataType的区别
$.ajax({ type: httpMethod, cache:false, async:false, contentType: "application/json; charset=ut ...
- android的图片的初步学习理解
Android支持JPEG和PNG格式.GIF和BMP格式图片的支持. 图片最终要显示在屏幕上,都会对应一个屏幕上的点,即对应一个颜色值.不同格式的图片,只是不同压缩编码和解压算法. 也就是说,我们看 ...
- ret和retf
ret指令用栈中的数据,修改IP的内容,从而实现近转移; retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移. CPU执行ret指令时,进行下面两步操作: (IP) = ((ss)*16+ ...
- pycurl提示load dll failed 找不到注册程序
原因:python虽然是2.7的 但有小版本区别 建议使用2.7.8
- Git两分钟指南-学习入门参考
Git两分钟指南 http://blog.jobbole.com/78999/ GIT和SVN之间的五个基本区别 http://www.oschina.net/news/12542/git-and-s ...
- django os.environ慎用setdefault操作环境变量!
在绝大多数情况下,如果需要在程序运行过程中设置环境变量,使用os.environ.setdefault函数是没有任何问题的,但是有两种场景下setdefault会造成意外的问题,需要慎用: 如果程序执 ...
- hibernate懒加载
Hibernate懒加载解析 hibernatejoinsession数据库sqlobject Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适 ...
- Python 字符串(count)
字符串 count:(python中的count()函数,从字面上可以知道,他具有统计功能) Python count() 方法用于统计字符串里某个字符出现的次数.可选参数为在字符串搜索的开始与结束位 ...
- this 关键字 详解
JS中的this关键字让很多新老JS开发人员都感到困惑.这篇文章将对this关键字进行完整地阐述.读完本文以后,您的困惑将全部消除.您将学会如何在各种不同的情形正确运用this. 我们和在英语.法语这 ...