社区
数据结构与算法
帖子详情
没法了,大家救命啊!!(114分奉上)
fanz2000
2001-12-22 03:14:23
快到交课程设计的时候了
怎么用c语言对一个单链表的关键字排序啊,
最好再另辟一个空间
有谁写过啊,
麻烦哪位给我一个自己写过的这种功能的函数或程序啊
114分奉上
...全文
51
3
打赏
收藏
没法了,大家救命啊!!(114分奉上)
快到交课程设计的时候了 怎么用c语言对一个单链表的关键字排序啊, 最好再另辟一个空间 有谁写过啊, 麻烦哪位给我一个自己写过的这种功能的函数或程序啊 114分奉上
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
z_yheart
2001-12-22
打赏
举报
回复
快速排序实现
作者:ilovec 2001.10.6
#include <stdio.h>
#include <math.h>
#include <process.h>
#include <stdlib.h>
#include <conio.h>
#include <bios.h>
#define TRUE 1
#define FALSE 0
#define OK 2
#define ERROR -1
#define INFEASIBLE -2
#define OVERFLOW -3
#define MAXSIZE 20
typedef int status;
typedef int keytype;
typedef struct {
keytype key;
}elemtype;
#define EQ(a,b) ((a)==(b))
#define LT(a,b) ((a)< (b))
#define LQ(a,b) ((a)<=(b))
typedef struct {
elemtype *elem;
int length;
}table;
void bufclr(void);
status createtable1(table *);
void printtable(table);
void quicksort(table);
void Qsort(table,int,int);
int partition(table,int,int);
void main()
{
table t;
int i;
keytype key;
clrscr();
if(createtable1(&t)!=2)
exit(ERROR);
printtable(t);
quicksort(t);
printtable(t);
getch();
}
status createtable1(table *pt)
{
int i;
pt->elem=(elemtype *)malloc(sizeof(elemtype)*(MAXSIZE+1));
if(!pt->elem)
return OVERFLOW;
for(i=1;i<=1000;i++){
pt->elem[i].key=random(1000);
}
pt->length=MAXSIZE;
return OK;
}
void bufclr()
{
if(fflush(stdin))
exit(ERROR);
}
void printtable(table t)
{
int i;
printf("The current table is:\n");
for(i=1;i<t.length+1;i++){
printf("%-6d",t.elem[i].key);
if(i%10==0)
putchar('\n');
}
}
int partition(table t,int low,int high)
{
keytype pivotkey;
t.elem[0].key=t.elem[low].key;
pivotkey=t.elem[low].key;
while(low<high){
while(low<high&&t.elem[high].key>=pivotkey)
--high;
t.elem[low].key=t.elem[high].key;
while(low<high&&t.elem[low].key<=pivotkey)
++low;
t.elem[high].key=t.elem[low].key;
}
t.elem[low].key=t.elem[0].key;
return low;
}
void Qsort(table t,int low,int high)
{
int pivotloc;
if(low<high){
pivotloc=partition(t,low,high);
Qsort(t,low,pivotloc-1);
Qsort(t,pivotloc+1,high);
}
}
void quicksort(table t)
{
Qsort(t,1,t.length);
}
z_yheart
2001-12-22
打赏
举报
回复
思路:
设输入的序列L[p..r],确定支点元素l[p]和l[r],并使l[p].key<=l[r].key
分解(Divide):将序列L[p..r]划分成三个子序列L[p..k-1]、L[k+1..m-1]和L[m+1..r],使L[p..q]中关系为L[p..k-1]、l[k]、L[k+1..m-1]、l[m]、L[m+1..r]任一区间元素的值不大于其后区间元素的值。
递归求解(Conquer):通过递归调用快速排序算法分别对L[p..k-1]、L[k+1..m-1]和L[m+1..r]进行排序。
算法的实现(用C语言实现)
QSort(Sqlist &L,int low,int high){
c=high-low; /*循环次数*/
if(c<10)直接调用插入排序法; /*小数时直接调用插入排序法*/
if(L.r[low].key>L.r[high].key)L.r[low]<->L.r[high]; /*确保区间内第一个元素的值不大于区间内最后一个元素的值*/
ilow=low; /*小于区间内第一个元素的值数组边界下标*/
ihigh=high; /*大于区间内最后一个元素的值数组边界下标*/
for(i=low+1;i<c;i++){
if(L.r[i].key<L.r[low].key)L.r[i]<->L.r[++ilow]; /*小于区间内第一个元素的值放置ilow区间内*/
else
if(L.r[i].key>L.r[high].key){
L.r[i]<->L.r[--ihigh]; /*大于区间内最后一个元素的值放置ihigh区间内*/
i--; /*下一个比较位置不变*/
c--; /*循环次数减一*/
}
}
L.r[ilow]<->L.r[low]; /*将小于区间内第一个元素的边界下标元素与第一个元素互换*/
L.r[ihigh]<->L.r[high]; /*将大于区间内最后一个元素的边界下标元素与最后一个元素互换*/
QSort(L,low,ilow-1);
QSort(L,ilow+1,ihigh-1);
QSort(L,ihigh+1,high);
}
void QuickSort(Sqlist &L)
{
QSort(L,1,L.length);
}
优点:
1、每次快速排序将确定二个元素位置
2、每次快速排序将划分三个区间,优化后续平均时间和空间复杂度
缺点:
1、存在较多的元素交换(每次需要三步),不及改进快速排序法利用空穴赋值方便
liuto
2001-12-22
打赏
举报
回复
唉!...
是不是象俺一样经常逃课呀。
年终盘点|知数堂2017年度好文
是时候来一波总结啦~今天小编将2017年知数堂的讲师原创好文、举办的公开课资料、学员的原创好文,及知数堂藏经阁的译文分享等进行了总结归纳,并将干货资料分类整理,打包奉上,欢迎大家转载!知数堂讲师原创系列知...
SSH/RDP无法远程连接?腾讯云CVM及通用服务器连接失败原因与超全排查指南
今天,Hostol就来为你奉上一份超全的“服务器连接救援指南”,带你从客户端到服务器端,一步步排查SSH和RDP连接失败的各种“疑难杂症”,让你也能化身“连接神探”! 第一步:自查三问 —— “问题是不是出在我自己...
向死而生的跨境电商,还有几道
救命
符可用?
网易考拉海购将直播化运营奉为2016年三大战略之一;翁永飆除了“豌豆公主”外,也在日本市场推出了前端类Instagram的红人电商“Wonderfull”, 菠萝蜜主打视频直播,亚马逊更是量身打造了《时尚密码现场》直播类节目...
GitHub 告急!黑客威胁程序员不交钱就删库!
5月3日,当中国程序员正愉快地过五一节时,国外程序员突然发现自己GitHub上的代码不翼而飞!自己的GitHub一秒变成悬疑片现场,不仅被黑客攻击删代码了,嚣张的黑客还留下一封勒索信: 如果你要恢复丢失的代码和...
新手学网络安全培训必备攻略:从零基础适配性到培训费用、就业前景、课程内容、薪资预期,机构避坑指南一站式奉上
相比软件开发需要扎实的算法和数据结构基础,网络安全更侧重逻辑思维、规则理解和实战经验,对“代码能力”的要求分场景: 入门岗位(如安全运维、等保测评) :只需掌握基础脚本(Python/Shell),能看懂日志、配置...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章