帮帮我这个初学者

wangliminde 2001-09-20 02:41:59
各位程序员,我在学习数据结构排序这一节时,:总结了一下(还没有做习题)
排序操作基本上都是以数组为对象,用链表做的很少,关于链表排序,我的知识是少得可怜,我试着用直接插入排序的方法来排一个链表,也排不出来,数据就用9,8,10,5,4,11,12,0吧能否给我一个用直接插入排序的方法完成的算法???(用c语言写的)还有,能否用快速排序法把这个链表排出来!!我搞了一天,也没有搞出来!!
谢谢各位大侠!!


...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lostit 2001-09-21
  • 打赏
  • 举报
回复
不敢称大侠,帮人到底.
typedef struct{
int key;
float inf;
}element;
typedef element list[m];
list r;
int lefth,leftt,righth,rightt;
void partition(int h,int t);
void quicksort(int h,int t);
void quicksort(h,t)
{
int h,t;
{
if(h<t)
{
partition(h,t);//划分函数

quicksort(lefth,leftt);
quicksort(righth,rightt);
}
}
}


void partition(int h,int t)

{
int pivot;
int i,j;
element extr;
i =h;
j=t;
pivot=r[(i+j)/2].key;
do{
while(r[i].key<pivot)
i++;
while(r[j].key>pivot)
j--;
if(i<=j)
{
extr=r[i];
r[i]=r[j];
r[j]=extr;
i++;
j--;
}
}while(i<=j);
lefth=h;
leftt=j;
righth=i;
rightt=t;
}


wangliminde 2001-09-21
  • 打赏
  • 举报
回复
给分!!!!!!!
wangliminde 2001-09-20
  • 打赏
  • 举报
回复
还有十分,谁要???
wangliminde 2001-09-20
  • 打赏
  • 举报
回复
谢谢大侠!!!!!还有一问,用快速排序如何完成这个链表的排序呢?
lostit 2001-09-20
  • 打赏
  • 举报
回复
闲着没事.帮你抄了一段直接插入排序的算法.
typedef struct node {
int key;
struct node *next;
}NODE;

struct node *insertsort(NODE *head)
{
NODE *p,*tail,*q,*r;
if(head!=NULL)
{
tail = head;
while(tail->next!=NULL)
{
p=tail->next;
if(p->key<head->key)/*小于则插入到头结点*/
{
tail->next=p->next;
p->next=head;
head=p;
}
else{/*依次与已派好序的结点比较*/
q = head;
r = q->next;
while(p->key>r->key)
{
q=r;
r=q->next;
}
if(p==r)
tail=p;
else{/*插到 r 前面*/
tail->next = p->next;
p->next=r;
q->next = p;/*q是r前的一节点*/
}
}
}
}
return(head);
}

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧