快速排序和冒泡排序的区别,堆排序,希尔排序,冒泡排序,快速排序,哪个最费时?

用户投稿 68 0

关于“快速排序和冒泡排序php”的问题,小编就整理了【4】个相关介绍“快速排序和冒泡排序php”的解答:

堆排序,希尔排序,冒泡排序,快速排序,哪个最费时?

冒泡最费时间,o(n^2), 快速排序和堆排序都是比较好的排序,o(nlogn)

数据排序的4种常用方法?

1. 冒泡排序:将相邻两个元素比较,如果前一个元素大于后一个元素,则交换它们的位置,重复该过程直到最后一个元素被排序。

2. 插入排序:将未排序的元素依次插入已排序的元素中,每次插入后都保证已排序的元素仍然有序。

3. 选择排序:每次从未排序的元素中选择最小的元素,插入到已排序的元素末尾。

4. 快速排序:通过选定一个基准元素,将数组分割成两个子数组,其中一个子数组的元素都小于等于基准元素,另一个子数组的元素都大于基准元素。然后递归地对两个子数组进行排序。

冒泡排序的例子?

快速排序:quicksort:找数组中一个数,把比他大的放到左边,比他小的放到右边,然后用递归排他左右边的,直到排完,复杂度O(nlgn)。

4,2,1,6,5.开始选4-2,1,4,6,5,再在2,1里选2-1,2,在6,5里选6-5,6这样就完了1,2,4,5,6.

冒泡排序:bubblesort:简单的方法,从第一个数开始,依次和后面比较,比后面大就往后移动,直到排完,举例:5,1,2,3,4.先看5-1,5,2,3,4-1,2,5,3,4-1,2,3,5,4-1,2,3,4,5.这例子特殊,一下排完,事实上复杂度为O(n*n);

插入排序:insertionsort:简单的方法,和打牌时排序一样,复杂度O(n*n)

1,3,2,4,7,5-1,2,3,4,7,5-1,2,3,4,5,7.

堆:heapsort:和树比较像,有根大枝小或根小枝大的特点,很难讲明白,时间复杂度为O(n*lgn)

建议看《算法导论》,或《programmingpearls》很清楚。

常见的几种排序算法?

一、冒泡排序

已知一组无序数据a[1]、a[2]、……a[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],有序区为空。

②第1 趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1 个记录R[1]交换,使R[1..1]和R[2..n]分别变 为记录个数增加1 个的新有序区和记录个数减少1 个的新无序区。

到此,以上就是小编对于“快速排序和冒泡排序php”的问题就介绍到这了,希望介绍关于“快速排序和冒泡排序php”的【4】点解答对大家有用。

抱歉,评论功能暂时关闭!