快速排序:是对冒泡排序的一种改进。(因为快排算法元素间的比较次数比较少,速度快,因而得名快排。在各种内部排序方法中,快排被认为是目前最好的一种排序方法。)
快排之所以效率高,是因为每次元素的移动都是跳跃式的。每趟的排序都要指定一个基准点,把小于等于基准元素的所有元素都移动到基准元素前面,把大于等于基准元素的所有元素都移动到基准元素后面,元素移动的间隔距离较大,因此总的比较和移动次数减少,排序速度自然提高。
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]);
else
break;
}
swap(k[s],k[j]);
quick(k,s,j-1);
quick(k,j+1,t);
}
}
快排一般只适用于顺序表线性结构或数组序列的排序,并不适合在链表结构上实现排序。
可以参考学习点击打开链接