您的位置:首页 > 理论基础 > 数据结构算法

数据结构算法——顺序表应用

2016-04-24 10:54 411 查看
好几天没写博客了,一点一点补吧

今天看了贺老师的博客,记下写的程序

问题:分离元素:以第一个元素为基准值,比它大的放在右边,小的放在左边

函数功能代码:void move(sqlist *ps)
{
int prvote=ps->data[0];//基准值
int i=0;
int j=ps->length-1;
int tmp=0;
while(i<j)
{
//从右找到第一个比基准值小的数
while(i<j && ps->data[j]>prvote)
{
j--;
}
//从左找到第一个比基准值大的数
while(i<j && ps->data[i]<=prvote)
{
i++;
}
//跳出循环,交换两个元素值
if(i<j)
{
tmp=ps->data[i];
ps->data[i]=ps->data[j];
ps->data[j]=tmp;
}
}
tmp=ps->data[0];
ps->data[0]=ps->data[j];
ps->data[j]=tmp;
}


测试函数代码
int main()
{
sqlist sq={};
int arr[]={5,8,6,4,3,7,9,5,10,6};
creat_list(&sq,arr,10);
printf("移动前:");
travel_list(&sq);
move(&sq);
printf("移动后:");
travel_list(&sq);
return 0;
}


算法不复杂,容易出错的地方在两个while循环和交换数值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: