排序算法..

1.试以单链表为存储结构,实现简单选择排序算法
void Insertsort(Linklist &L)
{
Linklist p=L->next;
Linklist q=L->next;
Linklist minp=p;
int temp;
while§
{q=p->next //初始化
minp=p;
while(q)
{
if(q->datadata)
minp=q;
else
q=q->next;
}
q->data=temp;
q->data=minp->data;
minp=temp;
p=p->next;
}
}

2.实现双向冒泡排序算法
void BidBubbleSort(int array[], int n)
{
int low, high, flag, i;
low = 0;
high = n - 1;
while(low < high)
{
flag=0;
for(i=low; i<high; i++) //正向冒泡
{
if(array[i] > array[i+1]) //找到剩下中最大的
{
Swap(&array[i], &array[i+1]);
flag = 1; //标志, 有数据交换
}
}
if( !flag )
break;
high–;
for( i=high; i>low; i-- ) //反向冒泡
{
if(array[i] < array[i-1]) //找到剩下中最小的
Swap(&array[i], &array[i-1]);
}
low++;
}
}

3.借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key的记录。设此组记录存放于数组r[1…n].若查找成功,则返回记录在r数组中的位置

int Search(int a[],int low,int high,int key)
{
while(low<high)
{
while(low<high&&a[low]<key)low++;
while(low<high&&a[high]>key)high–;
if(r[low]==key)return low;
}
printf(“No find”);
}

4.计数排序

void CountSort(R a[],R b[])
{
for(int i=0;i<n;i++)
{
for(j=0,c=0;j<n;j++)
if(a[j].key<a[i].key)c++;
b[c]=a[i];
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱技术的小曹

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值