排序(2)快速排序

来源:互联网 发布:淘宝上的nba旗舰店 编辑:程序博客网 时间:2024/05/21 13:54

快速排序:是对冒泡排序的一种改进。(因为快排算法元素间的比较次数比较少,速度快,因而得名快排。在各种内部排序方法中,快排被认为是目前最好的一种排序方法。)


快排之所以效率高,是因为每次元素的移动都是跳跃式的。每趟的排序都要指定一个基准点,把小于等于基准元素的所有元素都移动到基准元素前面,把大于等于基准元素的所有元素都移动到基准元素后面,元素移动的间隔距离较大,因此总的比较和移动次数减少,排序速度自然提高。


void quicksort(keytype k[],int s,int t) {int i,j;if(s<t) {i=s;j=t+1;while(1) {do i++;while(!(k[s]<=k[i] || i==t));do j++;while(!(k[s]>=k[j]) || j==s);if(i<j)swap(k[i],k[j]);elsebreak;}swap(k[s],k[j]);quick(k,s,j-1);quick(k,j+1,t);}}

快排一般只适用于顺序表线性结构或数组序列的排序,并不适合在链表结构上实现排序。


可以参考学习点击打开链接





原创粉丝点击