发布时间 : 星期四 文章排序实验程序更新完毕开始阅读ec8819925a8102d277a22f95
#include \#include \#include \#include \#include \
#define OK 1 #define ERROR 0 #define OVERFLOW -2 #define TRUE 1 #define FALSE 0 #define NULL 0
#define MAXSIZE 20
typedef int Status; typedef int KeyType; typedef struct{ KeyType key; int otherinfo; }RedType; typedef struct{ RedType r[MAXSIZE+1]; int length; }SqList;
void OutPut(SqList L){//输出顺序表 int i; for(i=1;i<=L.length ;i++) cout< Status inittable(SqList &L,int n){ //初始化顺序表函数,n为表中数据元素的个数,产生[0,500]的随机数存入表中 int i,j,flag; KeyType e; L.length =n; for(i=1;i<=n;i++){ flag=0; e=rand()P0; for(j=1;j L.r [j].key=e; else i--; } return OK; } void InsertSort(SqList &L){//直接插入排序 int i,j; for(i=2;i<=L.length;i++) if(L.r[i].key void BInsertSort(SqList &L){//折半插入排序 int low,high,m,i,j; for(i=2;i void InsertSort2(SqList L,RedType d[],int &first,int &final){//2_路插入排序 int i,j; first=1; final=1; d[1].key =L.r[1].key; for(i=2;i<=L.length;i++){ if(L.r[i].key >=d[1].key ){ for(j=final;L.r[i].key d[first].key =L.r[i].key ; } else{ for(j=first;L.r[i].key>d[j].key && j<=L.length ;j++) d[j-1].key =d[j].key ; d[j-1].key =L.r[i].key ; first--; } } } } void OutPut2(RedType d[],int first,int final,int length){//输出2_路插入排序结果 int i; for(i=first;i<=length;i++) cout< //希尔排序 void ShellInsert(SqList &L,int dk){ int i,j; for(i=dk+1;i<=L.length ;i++) if(L.r[i].key void ShellSort(SqList &L,int dlta[],int t){ int k; for(k=0;k void BubbleSort(SqList &L){//起泡排序 int n,i,flag; KeyType e; for(n=1;n L.r[i].key =L.r[i+1].key ; L.r[i+1].key =e; flag=1; } if(flag==0) return; } } //快速排序 int Partition(SqList &L,int low,int high){ KeyType pkey; L.r[0].key =L.r[low].key ; pkey=L.r[low].key ; while(low void QSort(SqList &L,int low,int high){ int ploc; if(low void QuickSort(SqList &L){ QSort(L,1,L.length ); } //快速排序 //简单选择排序 int SelectMinKey(SqList L,int i){ int min,j; min=i; for(j=i+1;j<=L.length ;j++) if(L.r[j].key void SelectSort(SqList &L){ int i,j; KeyType e;