排序算法 php,常见的几种排序算法?

用户投稿 56 0

关于“排序算法_php实现”的问题,小编就整理了【3】个相关介绍“排序算法_php实现”的解答:

常见的几种排序算法?

一、冒泡排序

已知一组无序数据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 个的新无序区。

排序算法:有100万数据,用卙用内存最小和排序最忋void sort(int* array, int n) 其中你n的值为100万左右?

int类型最大值为32767,故可以用32767的int数组存贮。

void sort( int *array , int n ){

int *array = new int[32767];

Zero_Memory( array , sizeof(int)*32767 );

for( long i = 0 ; i < n ; ++i ){

int data_i = read( i );//得到第i个数

++array[data_i];

}

}

那么array的下标就是数据,元组的值就是数据的个数,为0就是没有这个数据。

遍历一下这个数组就能得到排序好的序列,

内存 32767*sizeof(int),时间是n

排序算法十大经典方法?

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。

包含以下内容:

1、冒泡排序

2、选择排序

3、插入排序

4、希尔排序

5、归并排序

6、快速排序

7、堆排序

8、计数排序

9、桶排序

10、基数排序

常见的快速排序、归并排序、堆排序、冒泡排序等属于比较排序。在排序的最终结果里,元素之间的次序依赖于它们之间的比较。每个数都必须和其他数进行比较,才能确定自己的位置。

计数排序、基数排序、桶排序则属于非比较排序。

非比较排序是通过确定每个元素之前,应该有多少个元素来排序。

针对数组arr,计算arr[i]之前有多少个元素,则唯一确定了arr[i]在排序后数组中的位置。

到此,以上就是小编对于“排序算法_php实现”的问题就介绍到这了,希望介绍关于“排序算法_php实现”的【3】点解答对大家有用。

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