2016 - 2024

感恩一路有你

shell数组的定义方法分为哪四种 常见的几种排序算法?

浏览量:2975 时间:2023-07-07 14:54:06 作者:采采

常见的几种排序算法?

首先,冒泡排序

一组无序数据a[1],a[2],...已知一个[n],需要按升序排列。首先,比较a[1]和a[2]的值。如果a[1]大于a[2],则两者的值交换,否则保持不变。然后比较a[2]和a[3]的值。如果a[2]大于a[3],交换两者的值,否则保持不变。比较a[3]和a[4],以此类推,最后比较a[n-1]和a[n]的值。经过一轮这样的处理后,a[n]的值必须是这组数据中最大的。如果a[1]~a[n- 1]在另一轮中以同样的处理,a[n- 1]的值一定是a[1]~a[n-1]中最大的。然后a[1]~a[n-2]以同样的进行一轮,以此类推。在处理n-1轮之后,a[1],a[2],...A [n]按升序排列。

优点:稳定;

缺点:慢,一次只能移动两个相邻的数据。

第二,选择排序

每次行程从要排序的数据元素中选择最小(或最大)的元素,顺序放在排序后的数据序列的末尾,直到所有要排序的数据元素都排列好。

选择性排序是一种不稳定的排序方法。

n个记录文件的直接选择排序可以在n-1个直接选择排序后得到一个有序的结果:

①初始状态:无序区为r [1...n],并且有序区域是空的。

②在第一次排序中,从无序区域R[1]中选择具有最小关键字的记录R[k]..n],并且它与无序区域中的第一个记录R[1]交换,使得R[1..1]和R[2..n]分别变成增加一条记录的新的有序区域和减少一条记录的新的无序区域。

③第I次排序

在第I个排序开始时,当前有序区域和无序区域是R[1..i-1]和R(1≤i≤n-1)。这个排序从当前无序区中选择关键字最小的记录R[k],与无序区中的第一条记录R交换,使R [1...I]和R分别成为增加一条记录的新有序区和减少一条记录的新无序区。

这样,n个记录文件的直接选择排序就可以得到n-1个直接选择排序后的一个有序结果。

优点:移动数据的次数是已知的(n-1次);

缺点:比较太多。

第三,插入排序

一组数据a[1],a[2],...按升序排列的A [n]和一组无序数据b[1],b[2],...B [m]都是已知的,所以需要把它们组合成一个升序序列。首先比较b[1]和a[1]的值。如果b[1]大于a[1],则跳过。比较b[1]和a[2]的值。如果b[1]仍然大于a[2],继续跳过,直到b[1]小于一个数组中的某个数据a[x]为止。到a[x]的原始位置,这就完成了b[1]的插入。B[2]~b[m]以同样的插入。(如果有无数个组A,b[1]可以看作n1的数组A。)

优点:稳定快速;

缺点:比较的次数不一定相同。比较次数越少,插入点后移动的数据就越多,尤其是数据总量巨大的时候,而链表可以解决这个问题。

第四,缩小增量排序

由Hill于1959年提出,又称Hill排序(壳排序)。

一组无序数据a[1],a[2],...已知一个[n],需要按升序排列。发现当n不大时,插入排序的效果很好。首先取一个增量d(dltn),列出a[1],a[1 d],A [12d]...作为第一组,还有一个[2],一个[2 d],一个[22d]...作为第二组,a[d],a[2d],a。

如何在linux服务器上用 PHP 执行 python 脚本?

您可以将执行python脚本视为执行shell命令。

Php可以通过以下执行shell命令:

1.字符串系统(string $command [,int amp$return_var])

exec ( string $command [,array amp$output [,int amp$return_var ]])

3.void passthru ( string $command [,int amp$return_var])

数据 排序

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。