快速排序

http://www.tyut.edu.cn/kecheng1/site01/suanfayanshi/quick_sort.asp

 

第一次快速排序的具体做法是:设置变量i指向参加排序的记录序列中第一个位置0,变量j指向参加排序的记录序列中最后位置n-1。首先保存记录R0,使得R[0]为空出的位置(空位在前一区),这时,令j向前扫描,寻找小于R0的记录,假设找到的记录是R[ j ],将记录R[ j ]移到当前空位中;这时R[ j ]成为空位(空位在后一区),再令i自i+1起向后扫描,寻找大于R0排序码的记录,假设找到的记录是R[ i ],将记录R[ i ]移到当前空位中,空位又到了前一区,然后再令j自j-1起向前扫描。如此交替改变扫描方向,从两端向中间靠拢,直到i=j,这时i所指的位置为R0的最终位置

 

 

 

void  quickSort(SortObject * p,int l,int r){

int i,j;

RecordNode temp;

if(l>=r)return;

i=l;j=r;temp=p->record[i];

while(i!=j)

{

while((p->record[j].key>=temp.key)&&(j>i))j--;

if(i<j)p->record[i++]=p->record[j];

while((p->record[i].key<=temp.key)&&(j>i))i++;

if(i<j)p->record[j--]=p->record[i];

}

p->record[i]=temp;

quickSort(p,l,i-1);

quickSort(p,i+1,r)

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值