数据结构严蔚敏版快速排序算法c语言实现
来源:互联网 发布:小米手机4636设置网络 编辑:程序博客网 时间:2024/05/12 21:39
//严蔚敏数据结构快速排序算法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);}
0 0
- 数据结构严蔚敏版快速排序算法c语言实现
- 数据结构 C语言实现快速排序
- 【数据结构与算法】(七) c 语言实现一种快速排序算法
- 快速排序C语言算法实现
- c语言实现快速排序算法
- 快速排序算法的c语言实现
- 快速排序算法的C语言实现
- 算法导论C语言实现: 快速排序
- 快速排序算法 C语言实现
- 直白快速排序算法,C语言实现
- C语言快速排序算法实现
- 【算法】C语言实现的快速排序
- C语言实现数组快速排序算法
- C语言---快速排序算法实现
- 快速排序算法的C语言实现
- C语言实现快速排序算法
- 用C语言实现快速排序算法
- 用C语言实现快速排序算法
- 行人检测(Pedestrian Detection)资源
- RDLC个人使用小结一
- wget 用法
- 小马哥---高仿苹果6 R7226刷机拆机主板图与开机识别图 修改WiFi信号增强
- up和down还可以使用类似选择器的形式来捕获控件
- 数据结构严蔚敏版快速排序算法c语言实现
- 如何调用他人的远程服务---RPC原理
- JSP界面中引用相对路径问题
- js严格模式
- 中断的下半部处理机制(1)小任务机制
- 天声人語 20151228 冬の月に誘われて
- java操作mongdb多条件复合查询(包括模糊查询和按时间段查询),分页
- 从源代码的角度分析--在BaseAdapter调用notifyDataSetChanged()之后发生了什么
- Qt 对话框的使用