排序算法

来源:互联网 发布:翻译视频的软件 编辑:程序博客网 时间:2024/05/17 04:57

单纯思路。

快速排序,假如有数字7,5,4,3,6.

那么思想是这样的第一轮快排得到:6,5,4,3,7.

设立i,j分别为a[0]及a[N-1];a[0] = key;现在关键值key = 7

那么第一次快排后,根据原则。从尾部开始比对key值小于则调换a[j]和key值。否则继续j--;

那么接着根据快排原则,i++向前搜索,探索比较是否有大于key的值,有的话交换,没有的话继续i++;

发现没有一个值大于7的于是乎,最后快排结果为6,5,4,3,7。之后在分别的key值两边的数快排以此推到。


归并排序,假如有数字6,5,2,1,15,4

首先以分的原则,分为T1[]={6,5,2}和T2[]={1,15,4}两部分进行排序得到:{2,5,6}和{1,4,15}

之后设立一个T[],将T1[]和T2[]的数字,设i和j为T1,T2数组坐标。之后进行数字比较。若T1[i]<T2[j],那么将T1[i]记录到T[]中,并且下标i++;

继续比较T1与T2的大小,直到T1或者T2数组中没有元素。再把剩余的T1或者T2的元素连到T[]下。

示例:

T[]= {1};//T1={2,5,6};T2={4,15}

T[]={1,2};//T1={5,6};T2={4,15}

T[]={1,2,4};//T1={5,6};T2={15}

T[]={1,2,4,5};//T1={6};T2={15}

T[]={1,2,4,5,6,15}

*这样看来无论是链表、哈希表。还是在归并排序当中的应用。都是以计算机空间为代价,来换取效率上的优越。就是所谓的空间换时间了。半夜突想排序!仅仅范例!





0 0