java排序,效率高的是哪种排序方法

和所有其他语言是一样的。应该还是快速排序效率最高。

public static void bubbleSort(int a[]) {
int len = a.length;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
public static void selectSort(int a[]) {
int temp = 0;
int len = a.length;
for (int i = 0; i < len - 1; i++) {
int min = a[i];
int index = i;
for (int j = i + 1; j < len; j++) {
if (min > a[j]) {
min = a[j];
index = j;
}
}
temp = a[i];
a[i] = a[index];
a[index] = temp;
}
}
public static void insertSort(int a[]) {
int len = a.length;
for (int i = 1; i < len; i++) {
int temp = a[i];// 待插入的值
int index = i;// 待插入的位置
while (index > 0 && a[index - 1] > temp) {
a[index] = a[index - 1];// 待插入的位置重新赋更大的值
index--;// 位置往前移
}
a[index] = temp;
}
}
public static int partition(int a[], int low, int height) {
int key = a[low];
while (low < height) {
while (low < height && a[height] >= key)
height--;
a[low] = a[height];
while (low < height && a[low] <= key)
low++;
a[height] = a[low];
}
a[low] = key;
return low;
}
public static void quickSort(int a[], int low, int height) {
if (low < height) {
int result = partition(a, low, height);
quickSort(a, low, result - 1);
quickSort(a, result + 1, height);
}
}
测试结果
------------------------------------------
测试数据10000
冒泡排序:120ms
选择排序:32ms
插入排序:20ms
快速排序:7ms
------------------------------------------
测试数据100000
冒泡排序:13098ms
选择排序:2334ms
插入排序:1264ms
快速排序:23ms
效率差距很大啊!!!!

时间: 2024-11-09 02:45:03

java排序,效率高的是哪种排序方法的相关文章

学习Java绝对要懂的,Java编程中最常用的几种排序算法!

今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来!     ,群里有免费的学习视频和项目给大家练手.大神有空时也会带带大家的,学Java的过程中一定要多问多记,不要怕问题,要去主动的解决问题. 冒泡排序 选择排序 插入排序 归并排序 例如:降序排{10,5,9,6}分为{10,5},{9,6}然后{5,10},{6,9}然后完成 快速排序 就最后一个快速排序可能大家看不太懂,我就举个例子吧 开始输入以下数组

java中应对高并发的两种策略

目的:提高可用性 通过ExecutorService实现队列泄洪 //含有20个线程的线程池 private ExecutorService executorService = Executors.newFixedThreadPool(20); 将有并发压力的下游代码放入到线程池的submit方法中,如下: //同步调用线程池的submit方法 简单实现 拥塞窗口为20的队列泄洪(一个服务器同一时间只能处理20个请求,其他请求队列等待)Future<Object> future = execu

java实现二叉树的构建以及3种遍历方法

转载自http://ocaicai.iteye.com/blog/1047397 大二下学期学习数据结构的时候用C介绍过二叉树,但是当时热衷于java就没有怎么鸟二叉树,但是对二叉树的构建及遍历一直耿耿于怀,今天又遇见这个问题了,所以花了一下午的时间来编写代码以及介绍思路的文档生成! 目录: 1.把一个数组的值赋值给一颗二叉树 2.具体代码 1.树的构建方法 2.具体代码 Java代码   package tree; import java.util.LinkedList; import jav

java实现二叉树的构建以及3种遍历方法(转)

转 原地址:http://ocaicai.iteye.com/blog/1047397 大二下学期学习数据结构的时候用C介绍过二叉树,但是当时热衷于java就没有怎么鸟二叉树,但是对二叉树的构建及遍历一直耿耿于怀,今天又遇见这个问题了,所以花了一下午的时间来编写代码以及介绍思路的文档生成! 目录: 1.把一个数组的值赋值给一颗二叉树 2.具体代码 1.树的构建方法 2.具体代码 Java代码   package tree; import java.util.LinkedList; import 

C#编程高并发的几种处理方法

并发(英文Concurrency),其实是一个很泛的概念,字面意思就是"同时做多件事",不过方式有所不同.在.NET的世界里面,处理高并发大致有以下几种方法: 1,异步编程 异步编程就是使用future模式(又称promise)或者回调机制来实现(Non-blocking on waiting).如果使用回调或事件来实现(容易callback hell),不仅编写这样的代码不直观,很快就容易把代码搞得一团糟. 不过在.NET 4.5 及以上框架中引入的async/await关键字(在.

Java多线程循环打印ABC的5种实现方法

题目:3个线程循环打印ABC,其中A打印3次,B打印2次,C打印1次,循环打印2轮一.Synchronized同步法思路:使用synchronized.wait.notifyAll的方法利用线程标记变量控制三个线程的执行顺序. /** * @author XDarker * 2018-5-17 */public class Main { public static void main(String[] args) throws InterruptedException { int num = 1

单向链表排序时间复杂度比较低的一种排序算法

归并排序:   来自网上一篇博文,先贴上链接,后期将会上传个人见解: http://blog.sina.com.cn/s/blog_78a4bd490101fow8.html

浅谈java中如何处理高并发的问题

1.从最基础的地方做起,优化我们写的代码,减少必要的资源浪费     a.避免频繁的使用new对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式.对于String连接操作,使用StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问.     b.避免使用错误的方式,尽量不用instanceof做条件判断.使用java中效率高的类,比如ArrayList比Vector性能好. 2.html静态化     我们通过一个链接地址访问,通过这个链接地址,服务器

整理的8种排序算法的总结和比较

1 快速排序(QuickSort) 快速排序是一个就地排序,分而治之,大规模递归的算法.从本质上来说,它是归并排序的就地版本.快速排序可以由下面四步组成. (1) 如果不多于1个数据,直接返回. (2) 一般选择序列最左边的值作为支点数据. (3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据. (4) 对两边利用递归排序数列. 快速排序比大部分排序算法都要快.尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了.快速排序是递归的,对于内