//严蔚敏数据结构快速排序算法c语言实现
#include<stdio.h>
typedef int InfoType; /* 定义其它数据项的类型 */
/* c10-1.h 待排记录的数据类型 */
#define MAXSIZE 20 /* 一个用作示例的小顺序表的最大长度 */
typedef int KeyType; /* 定义关键字类型为整型 */
typedef struct
{
KeyType key; /* 关键字项 */
InfoType otherinfo; /* 其它数据项,具体类型在主程中定义 */
}RedType; /* 记录类型 */
typedef struct
{
RedType r[MAXSIZE+1]; /* r[0]闲置或用作哨兵单元 */
int length; /* 顺序表长度 */
}SqList; /* 顺序表类型 */
int Partition(SqList *L,int low,int high);
int count=0;
void print(SqList L,int type)
{
int i;
for(i=1;i<=L.length;i++)
{
if(type==0)
{
printf("(%d,%d)",L.r[i].key,L.r[i].otherinfo);
}else{
printf("%d ",L.r[i].key);
}
}
printf("\n");
}
/* bo10-2.c 快速排序的函数 */
//这货要默写下来。
void QSort(SqList *L,int low,int high)
{ /* 对顺序表L中的子序列L.r[low..high]作快速排序。算法10.7 */
int pivotloc;
if(low<high)
{ /* 长度大于1 */
pivotloc=Partition(L,low,high); /* 将L.r[low..high]一分为二 */
count++;
printf("第%d轮:",count);
print(*L,1);
QSort(L,low,pivotloc-1); /* 对低子表递归排序,pivotloc是枢轴位置 */
QSort(L,pivotloc+1,high); /* 对高子表递归排序 */
}
}
void QuickSort(SqList *L)
{ /* 对顺序表L作快速排序。算法10.8 */
QSort(L,1,(*L).length);
}
//这货要默写下来。
int Partition(SqList *L,int low,int high)
{ /* 交换顺序表L中子表r[low..high]的记录,枢轴记录到位,并返回其 */
/* 所在位置,此时在它之前(后)的记录均不大(小)于它。算法10.6(b) */
KeyType pivotkey;
(*L).r[0]=(*L).r[low]; /* 用子表的第一个记录作枢轴记录 */
pivotkey=(*L).r[low].key; /* 枢轴记录关键字 */
while(low< high)
{ /* 从表的两端交替地向中间扫描 */
while(low<high&&(*L).r[high].key>=pivotkey)
--high;
(*L).r[low]=(*L).r[high]; /* 将比枢轴记录小的记录移到低端 */
while(low<high&&(*L).r[low].key<=pivotkey)
++low;
(*L).r[high]=(*L).r[low]; /* 将比枢轴记录大的记录移到高端 */
}
(*L).r[low]=(*L).r[0]; /* 枢轴记录到位 */
return low; /* 返回枢轴位置 */
}
#define LEN(a) sizeof(a)/sizeof(a[0])
void main()
{
RedType d[]={{49,1},{38,2},{65,3},{97,4},{76,5},{13,6},{27,7},{49,8}};
SqList l;
int i;
int N=LEN(d);
for(i=0;i<N;i++)
l.r[i+1]=d[i];
l.length=N;
printf("排序前:\n");
print(l,1);
QuickSort(&l);
printf("排序后:\n");
print(l,1);
}
数据结构严蔚敏版快速排序算法c语言实现
原文作者:排序算法
原文地址: https://blog.csdn.net/earbao/article/details/50417644
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/earbao/article/details/50417644
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。