请教内部排序问题,有一个错误,不知道怎么修改..

来源:百度知道 编辑:UC知道 时间:2024/05/31 22:50:06
#include "stdio.h"
#include "stdafx.h"
#include "iostream.h"
#define MAXSIZE 20
#define LT(a,b) ((a)<(b))
typedef int KeyType;
typedef int InfoType;
typedef struct{
KeyType key;
InfoType otherinfo;
}RedType;
typedef struct{
RedType r[MAXSIZE+1];
int length;
}SqList;
void ShellInsert(SqList &L){
//对顺序表L作一趟希尔插入排序。
int i,j;
int dk;
for(i=dk+1;i<=L.length;++i)
if(LT(L.r[i].key,L.r[i-dk].key)){

L.r[0]=L.r[i];
for (j=i-dk; j>0&<(L.r[0].key, L.r[j].key); j-=dk)
L.r[j+dk]=L.r[j];
L.r[j+dk]=L.r[0];
}

}
int Partition(SqList *L,int low, int high){
//对顺序表做快速排序。
int 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[high].key>=pivotkey) --high;
两个条件起本质是是一样的,
因为前面你有这句
pivotkey=L->r[low].key;

说真的,难怪没人回答,问题挑战性大,居然才5分
呵呵