导航:首页 > 源码编译 > 效率最快的排序算法

效率最快的排序算法

发布时间:2022-05-02 17:29:32

㈠ 排序算法高手帮忙选一种最快的排序方法

内存排序算法中最常用的算法是快速排序算法,时间复杂度是Onlogn,其它的几个算法,如插入排序、堆排序的时间复杂性都是这个值。
正常排序问题可以用堆排序,或者快排序,但这些算法实际上都是在数据队列已知的情况下的算法,你实际需要的是一个记录插入效率较高的算法,插入排序应该也不错的。
当然也可以进行一定优化,就是在产生数值有一定范围的情况下对数值区间进行分桶,产生数值后直接在指定的桶中应用以上排序算法。
另外,用数组的效率要比链表高

㈡ 请问常用排序算法的效率谁最高

折半排序法,也叫二分归并排序:
程序如下:
#include <stdio.h>
void merge(int a[],int p,int q,int r)
{
int n1=q-p+1,n2=r-q,i,j,k;
int l[1002],R[1002];
for (i=1;i<=n1;i++)l[i]=a[p+i-1];
for (j=1;j<=n2;j++)R[j]=a[q+j];
R[n2+1]=l[n1+1]=999999;
i=j=1;
for (k=p;k<=r;k++)
{
if (l[i]<=R[j])
{
a[k]=l[i];
i++;
}
else
{
a[k]=R[j];
j++;
}
}
}
void mergesort(int a[],int p,int r)
{
int q;
if (p<r)
{
q=(p+r)/2;
mergesort(a,p,q);
mergesort(a,q+1,r);
merge(a,p,q,r);
}
}
int main()
{
int a[1001],t,n,i;
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
for (i=1;i<=n;i++)scanf("%d",&a[i]);
mergesort(a,1,n);
for (i=1;i<=n;i++)
{
printf("%d",a[i]);
if (i!=n)printf(" ");
}
printf("\n");
}
return 0;
}

这个程序是先输入有几组数据。然后是一个整数,表示这组数据有几个数,然后再输入几个数就行了。
这个就是不断2分归并的排序算法

㈢ 排序算法中最快的一种

首先它是一种排序算法,排序算法是为了让无序的数据组合变成有序的数据组合。
有序的数据组合最大的优势是在于当你进行数据定位和采用时,
会非常方便,因为这个数据是有序的
从而在代码设计的时候会让你避免很多不必要的麻烦,
因为无序数据你在进行推断数据前后关系的时候会显示很繁琐
快速排序是排序中的一种,它在最差情况下和别的排序相差不大
而在最优,一般情况下,会比一般的排序方法更节省时间
这里的一般排序是指:起泡,希尔,插入等常规排序方法

㈣ 常见的排序算法哪个效率最高

快速排序法。

㈤ 有10万个学生的成绩,成绩在0-100之间,对其排序,然后输出。 请问用哪种排序算法的效率最高

一般来说,快速排序是万能的,时间复杂度O(nlogn)
但对于这题来说,由于要排序的元素范围在0-100之间,所以用【计数排序】可以在O(n)的复杂度完成排序
具体做法是,开一个数组,范围是0-100,即a[100],依次读取每一个元素i,将a[i]+1,可知每个元素出现了多少次,然后从0-100依次输出即可(这是从小到大,从大到小反过来就行了)!
不懂可问,满意请采纳谢谢!

㈥ 世界上最快的排序算法

Timsort是一个自适应的、混合的、稳定的排序算法,融合了归并算法和二分插入排序算法的精髓,在现实世界的数据中有着特别优秀的表现。它是由Tim Peter于2002年发明的,用在Python这个编程语言里面。这个算法之所以快,是因为它充分利用了现实世界的待排序数据里面,有很多子串是已经排好序的不需要再重新排序,利用这个特性并且加上合适的合并规则可以更加高效的排序剩下的待排序序列。

㈦ 以下哪种排序算法对进行的排序最快

1.选择排序:不稳定,时间复杂度
O(n^2)
选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。
2.插入排序:稳定,时间复杂度
O(n^2)
插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]
又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首先比较L[i]和L[i-1],如果L[i-1]≤
L[i],则L[1..i]已排好序,第i遍处理就结束了;否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j]
≤L[j+1]时为止。图1演示了对4个元素进行插入排序的过程,共需要(a),(b),(c)三次插入。
3.冒泡排序:稳定,时间复杂度
O(n^2)
冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。
4.堆排序:不稳定,时间复杂度
O(nlog
n)
堆排序是一种树形选择排序,在排序过程中,将A[n]看成是完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择最小的元素。
5.归并排序:稳定,时间复杂度
O(nlog
n)
设有两个有序(升序)序列存储在同一数组中相邻的位置上,不妨设为A[l..m],A[m+1..h],将它们归并为一个有序数列,并存储在A[l..h]。
6.快速排序:不稳定,时间复杂度
最理想
O(nlogn)
最差时间O(n^2)
快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。
几种排序的时间复杂度,可以参考一下

㈧ 一般来说,最快的排序算法是() A:归并排序 B:快速排序 C:插入排序 D:希尔排序

B:快速排序
现在开始,我们要接触高效排序算法了.实践证明,快速排序是所有排序算法中最高效的一种.它采用了分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了.这是一种先进的思想,也是它高效的原因.
各个算法时间复杂度比较:
平均时间复杂度
插入排序 O(n2)
冒泡排序 O(n2)
选择排序 O(n2)
快速排序 O(n log n)
堆排序 O(n log n)
归并排序 O(n log n)
基数排序 O(n)
希尔排序 O(n1.25)

㈨ 哪种排序算法的效率最高

没有最高,只有更高。不同数据结构有不同算法,没有可比性。同一种数据结构才能比

㈩ 在各类算法中那种算法排序是最快的

说句实话,没有最快这一说。

  1. 如果不在乎浪费空间,应该是桶排序最快

  2. 如果整体基本有序,插入排序最快

  3. 如果考虑综合情况,快速排序更加实用常见(希尔排序、堆排序等各种排序也各有优劣)

  4. 一般情况下,冒泡这种排序仅仅是名字起的有趣罢了,不太好用

阅读全文

与效率最快的排序算法相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:573
python员工信息登记表 浏览:373
高中美术pdf 浏览:156
java实现排列 浏览:510
javavector的用法 浏览:978
osi实现加密的三层 浏览:229
大众宝来原厂中控如何安装app 浏览:909
linux内核根文件系统 浏览:238
3d的命令面板不见了 浏览:520
武汉理工大学服务器ip地址 浏览:143
亚马逊云服务器登录 浏览:520
安卓手机如何进行文件处理 浏览:68
mysql执行系统命令 浏览:925
php支持curlhttps 浏览:141
新预算法责任 浏览:442
服务器如何处理5万人同时在线 浏览:246
哈夫曼编码数据压缩 浏览:421
锁定服务器是什么意思 浏览:382
场景检测算法 浏览:615
解压手机软件触屏 浏览:345