举例:
快速排序(QuickSort) 是由冒泡排序改进而得的,选取一个记录作为枢轴(通常取第一个记录)一次性把小于的全冒到左边,然后对左右两边递归。
快速排序方法中的一次交换可能消除多个逆序。
low和high两个指针轮流进行移动交换
。
算法属性:
时间复杂度为O(nlog2(n))。
空间复杂度最坏情况为O(n)
不稳定排序。
适合用于顺序结构,很难用于链式结构。
当n较大时,在平均情况下快速排序是所有内部排序方法中速度最快的一种,所以其适合初始记录无序、n较大时的情况。
代码实现:
#include<stdio.h>
#define MAXSIZE 20
typedef int KeyType;
typedef int InfoType;
//记录类型
typedef struct {
KeyType key;
InfoType otherinfo;
}RedType;
//顺序表类型
typedef struct {
RedType r[MAXSIZE + 1]; //r[0]闲置或作哨兵
int length; //顺序表长度
}SqList;
//快速交换排序
//进行一趟排序并返回枢轴位置
int Partition(</