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

author author     2023-05-07     375

关键词:

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
效率差距很大啊!!!!
参考技术A 具体情况具体分析。。。
数据基本有序了用冒泡最快了
归并排序占用空间
适用于对空间要求不高的场合
堆排序情况也跟归并差不多
但也与堆的实现有关系
快速排序一般来说很好,适用于数据量大的情况
数据量少的话还是别用了
有时反而不如O(n^2)的排序方法
参考技术B 看具体情况使用.顺序排列,索引最快是LinkedList,有插入操作的是ArrayList
Verctor是同步的,安全,性能较低
参考技术C 你百度一下快速排序。它是左右两边同时排序的,效率很高。 参考技术D 和所有其他语言是一样的。应该还是快速排序效率最高。本回答被提问者采纳

普林斯顿公开课算法2-1:排序概述

目标对全部类型的数据进行排序。问题排序函数怎样知道比較的是哪种类型的数据呢?回调函数这时候就须要引入回调函数的概念了。回调函数就是将可运行的代码作为參数进行传递。实现回调的方法在Java中能够通过接口来实... 查看详情

使用 FileChannels 在 Java 中连接大文件的效率更高的方法是啥

】使用FileChannels在Java中连接大文件的效率更高的方法是啥【英文标题】:WhatmethodismoreefficientforconcatenatinglargefilesinJavausingFileChannels使用FileChannels在Java中连接大文件的效率更高的方法是什么【发布时间】:2011-05-1922:30:30【问题描... 查看详情

jssort原理

参考技术Ajs提供了sort方法,方便对数组进行排序,然而不同引擎对js的sort方法解析可能存在差异。本文基于v8引擎进行分析。在v8引擎中,对sort方法提供了2种排序算法:插入排序及快排序。sort使用方法:当没有参数传入的时候... 查看详情

效率较高的排序算法(代码片段)

1.快排思路:选取一个值,将比他小的放在他左边,比他大的放在他右边#!usr/bin/envpython#-*-coding:utf-8-*-importrandomdefquick_sort(data,left,right):ifleft<right:mid=partition(data,left,right)quick_sort(data,left,mid-1)quick_sort(da 查看详情

java常用排序

Java常用排序,习惯规则的使用“从小到小”后者从“从大到小”进行数组的相关排序!为了方面应用直接采取工具类的方式来抽取相关方法。以下列出常用的排序方式:需要补充说明的是:排序是一种算法,... 查看详情

ActiveSupport::Memoizable 指的是哪种 Ruby memoize 模式?

】ActiveSupport::Memoizable指的是哪种Rubymemoize模式?【英文标题】:WhichRubymemoizepatterndoesActiveSupport::Memoizablereferto?【发布时间】:2012-02-2606:43:33【问题描述】:所以在Rails3.2中,ActiveSupport::Memoizable已被弃用。消息内容如下:DEPRECATIONW... 查看详情

希尔排序

希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序... 查看详情

排序(选择插入希尔)(代码片段)

目标1) 使用下列方法将一个数组按升序排序:选择排序、插入排序和希尔排序2) 使用插入排序将链式节点链按升序排序3) 评估排序的效率,讨论不同方法的相对效率 目录8.1对数组进行排序的Java方法的组织8.2... 查看详情

如何判断 Chrome 使用的是哪种字体? [复制]

】如何判断Chrome使用的是哪种字体?[复制]【英文标题】:HowdoItellwhichfontChromeisusing?[duplicate]【发布时间】:2012-02-2603:33:54【问题描述】:假设我有以下CSSfont-family:\'Non-existantSans\',Arial,sans-serif;假设系统上没有安装“不存在的Sans... 查看详情

希尔排序温习

希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序... 查看详情

转载排序

目录(?)[+]概述实现步骤实现性能Java实现选择排序简单选择排序简单选择排序性能简单选择排序Java实现概述实现过程实现效率Java实现概述效率迭代实现实现原理Java代码递归实现实现原理Java代码基本思想排序效率Java实现浅析堆Jav... 查看详情

希尔排序

算法介绍希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。基本思想先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增... 查看详情

关于java的binarysearch()方法(转)

...注:此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外如果数组中含有多个指定值的元素,则无法保证找到的是哪一个。⑴.binarySearch(object[],objectkey);如果key在数组中,则返... 查看详情

确定哪种方法最适合比较排序算法。小型数据收集的分治或招聘问题

】确定哪种方法最适合比较排序算法。小型数据收集的分治或招聘问题【英文标题】:Determiningwhatmethodisbestforacomparativesortingalgorithm.DivideandConquerorHiringProblemforsmalldatacollection【发布时间】:2020-06-0421:34:25【问题描述】:这是我面... 查看详情

在 MySQL 中,我应该选择哪种排序规则?

】在MySQL中,我应该选择哪种排序规则?【英文标题】:InMySQL,whichcollationshouldIchoose?【发布时间】:2010-11-1621:30:43【问题描述】:当我通过phpMyAdmin创建新的MySQL数据库时,我可以选择排序规则(例如,默认、armscii8、ascii、...和​... 查看详情

java-数组排序--计数排序桶排序基数排序

计数排序引入不难发现不论是冒泡排序还是插入排序,其排序方法都是通过对每一个数进行两两比较进行排序的,这种方法称为比较排序,实际上对每个数的两两比较严重影响了其效率,理论上比较排序时间复杂度的最低下限为nlog(n),... 查看详情

快速排序(代码片段)

学习一下排序算法中的快速排序!快速排序和冒泡排序差不多,都是通过比较元素的大小,然后进行相应的交换,不过快速排序的效率要比冒泡排序高的多,因为它将一个整体一分二,二分四,,,然后每个小整体再进行比对交... 查看详情

在 Python 中连接字符串的首选方法是哪种?

】在Python中连接字符串的首选方法是哪种?【英文标题】:WhichisthepreferredwaytoconcatenateastringinPython?【发布时间】:2012-08-2314:03:07【问题描述】:由于Python的string无法更改,我想知道如何更有效地连接字符串?我可以这样写:s+=str... 查看详情