社区
C语言
帖子详情
<排序>放分100!!人人有份!!
oliver88888888
2004-07-07 07:43:39
1.给出各排序的代码(从C语言和数据结构两方面入手)
2.比较各排序的时间复杂度,优劣性能等
<排序>
a插入排序:
直接插入排序
希尔排序
b交换排序:
起泡排序
快速排序
c选择排序:
...全文
199
16
打赏
收藏
<排序>放分100!!人人有份!!
1.给出各排序的代码(从C语言和数据结构两方面入手) 2.比较各排序的时间复杂度,优劣性能等 a插入排序: 直接插入排序 希尔排序 b交换排序: 起泡排序 快速排序 c选择排序:
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weekly123
2004-07-08
打赏
举报
回复
up
snowegale888
2004-07-08
打赏
举报
回复
up
sanyou98
2004-07-08
打赏
举报
回复
up
lyz0418
2004-07-08
打赏
举报
回复
//数据以从小到大顺序排列
#include<iostream.h>
#include<stdlib.h>
#include<malloc.h>
typedef int KeyType;
#define MAXSIZE 100
#define MAXNUM 12
#define OK 1
struct RedType{
KeyType key;
//int otherinfo;
};
struct SqList{
RedType r[MAXSIZE+1];
int length;
};
//定义结构体
void Enter_List(SqList &L){
int test,i=1,n;
cout<<"输入数据元素的个数(n):"<<endl;
cin>>n;
cout<<"输入数据元素(data):"<<endl;
while(n){
cin>>test;
L.r[i].key=test;
i++;
L.length++;
n--;
}
}
//输入未排序序列
KeyType LT(KeyType s1,KeyType s2){
if(s1>=s2)
return 0;
else
return 1;
}
//比较s1、s2大小
void Print(SqList L){
cout<<"排好序的序列为:"<<endl;
int n=L.length;
for(int i=1;i<=n;i++)
cout<<L.r[i].key<<'\t';
cout<<endl<<endl;
}
//输出排好序的序列(通过检查序列是否为升序判断程序运行成功与否)
void Print_time(int time){
cout<<"程序的时间复杂度为:\t"<<time<<endl<<endl;
}
//各种排序方法:
KeyType BallSort(SqList &L){
int text=0,time=0,t=0;
for(int i=2;i<=L.length;i++){
text=i-1;
for(int j=i;j<=L.length;j++)
if(L.r[text].key>L.r[j].key){
text=j;
t=1;
time+=2;
}
if(t==1){
int t=0;
t=L.r[i-1].key;
L.r[i-1].key=L.r[text].key;
L.r[text].key=t;
time+=3;
}
}
return time;
}
//起泡排序
/*
KeyType InsertSort(SqList &L){
int time=0;
for(int i=2;i<=L.length;i++)
if(LT(L.r[i].key,L.r[i-1].key)){
L.r[0]=L.r[i];
L.r[i]=L.r[i-1];
for(int j=i-2;LT(L.r[0].key,L.r[j].key);--j){
L.r[j+1]=L.r[j];
time++;
}
L.r[j+1]=L.r[0];
time+=3;
}
return time;
}
//插入排序
KeyType BInsertSort(SqList &L){
int time=0;
for(int i=2;i<=L.length;i++){
L.r[0]=L.r[i];
int low,high;
low=1;
high=i-1;
while(low<=high){
int m=(low+high)/2;
if(LT(L.r[0].key,L.r[m].key))
high=m-1;
else
low=m+1;
time++;
}
for(int j=i-1;j>=high+1;--j){
L.r[j+1]=L.r[j];
time++;
}
L.r[high+1]=L.r[0];
}
return time;
}
//折半插入排序
KeyType ShellInsert(SqList &L,int dk){
int time=0;
for(int i=dk+1;i<=L.length;++i)
if(LT(L.r[i].key,L.r[i-dk].key)){
L.r[0]=L.r[i];
for(int j=i-dk;j>0&<(L.r[0].key,L.r[j].key);j-=dk){
L.r[j+dk]=L.r[j];
time++;
}
L.r[j+dk]=L.r[0];
}
return time;
}
KeyType ShellSort(SqList &L,int dlta[],int t){
int time=0;
for(int k=0;k<t;k++)
time+=ShellInsert(L,dlta[k]);
return time;
}
//希尔排序
KeyType Partition(SqList &L,int low,int high,int &time){
RedType s;
int pivotkey;
pivotkey=L.r[low].key;
while(low<high){
while(low<high&&L.r[high].key>=pivotkey){
--high;
time++;
}
s=L.r[low];
L.r[low]=L.r[high];
L.r[high]=s;
while(low<high&&L.r[low].key<=pivotkey){
++low;
time++;
}
s=L.r[low];
L.r[low]=L.r[high];
L.r[high]=s;
time+=6;
}
return low;
}
int time=0;
KeyType Qsort(SqList &L,int low,int high){
int pivotkey;
if(low<high){
pivotkey=Partition(L,low,high,time);
Qsort(L,low,pivotkey-1);
Qsort(L,pivotkey+1,high);
}
return time;
}
KeyType QuickSort(SqList &L){
int time=0;
time=Qsort(L,1,L.length);
return time;
}
//快速排序
KeyType SelectMinKey(SqList &L,int i,int &time){
int s,t;
s=L.r[i].key;
t=i;
for(int j=i+1;j<=L.length;j++)
if(s>L.r[j].key){
s=L.r[j].key;
t=j;
time+=2;
}
return t;
}
KeyType SelectSort(SqList &L){
int j,time=0;
RedType s;
for(int i=1;i<L.length;++i){
j=SelectMinKey(L,i,time);
if(i!=j){
s=L.r[i];
L.r[i]=L.r[j];
L.r[j]=s;
time+=3;
}
}
return time;
}
//简单选择排序
KeyType HeapAdjust(SqList &H,int s,int m,int &time){
RedType rc;
rc=H.r[s];
for(int j=2*s;j<=m;j*=2){
if(j<m&<(H.r[j].key,H.r[j+1].key))
++j;
if(!LT(rc.key,H.r[j].key))
break;
H.r[s]=H.r[j];
s=j;
time+=4;
}
H.r[s]=rc;
return OK;
}
KeyType HeapSort(SqList &H){
int time=0;
for(int i=H.length/2;i>0;--i)
HeapAdjust(H,i,H.length,time);
for(i=H.length;i>1;--i){
RedType rc;
rc=H.r[1];
H.r[1]=H.r[i];
H.r[i]=rc;
time+=3;
HeapAdjust(H,1,i-1,time);
}
return time;
}*/
//堆排序
void main(){
SqList L;
int time=0;
L.length=0;
Enter_List(L);
//time=InsertSort(L);
//插入排序
//time=BInsertSort(L);
//折半插入排序
/*int *dlta,n;
cout<<"输入增量序列数:"<<endl;
cin>>n;
dlta=(int *)malloc(n*sizeof(int));
cout<<"输入增量序列:"<<endl;
for(int i=0;i<n;i++)
cin>>dlta[i];
time=ShellSort(L,dlta,n);*/
//希尔排序
//time=QuickSort(L);
//快速排序
//time=SelectSort(L);
//简单选择排序
//time=HeapSort(L);
//堆排序
time=BallSort(L);
//其泡排序
Print(L);
Print_time(time);
}
821343
2004-07-08
打赏
举报
回复
书上都有呀,兄弟
cyy219
2004-07-08
打赏
举报
回复
倒分是什么意思?还有人闲分太多的呀?
goodname
2004-07-08
打赏
举报
回复
http://community.csdn.net/Expert/TopicView.asp?id=3149778
http://community.csdn.net/Expert/TopicView.asp?id=3153301
老大,倒分也过于明显了吧?
bujifeng
2004-07-08
打赏
举报
回复
接分先!!!
407
2004-07-08
打赏
举报
回复
顶
海上的云
2004-07-08
打赏
举报
回复
呵呵
顶吧
cnxiaohai
2004-07-07
打赏
举报
回复
是不是课程设计啊????
如果是课程设计
我可以教你
就是给你代码也没什么
如果是倒分
我可要举报“人渣”老大呢~~~~~~~~~~~~~~~~~~~~~~
antijpn
2004-07-07
打赏
举报
回复
http://community.csdn.net/Expert/topic/3114/3114475.xml?temp=.3919031
antijpn
2004-07-07
打赏
举报
回复
估计是倒分,此人已经有这样的记录了
dahan2005
2004-07-07
打赏
举报
回复
基本的东西也不自己写?
twfx7758
2004-07-07
打赏
举报
回复
等我在书上找到了告诉你啊!~~~~~~~~~~
an9ryfr09
2004-07-07
打赏
举报
回复
我就给你冒泡排序吧,(降序):
int a[10]={2,1,3,5,4,6,9,10,7,8};
int temp;
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<9;j++)
{
if(a[j]<a[i])
{temp = a[j];a[j] = a[i];a[i] = temp;}
}
}
for(i=0;i<10;i++)
printf("%d\n",a[i]);
楼下的继续吧...
微博上一些有用的话 >>>>转载他人的!
生活 全球潮流时尚榜:最使人疲惫的往往不是道路的遥远,而是你心中的郁闷;最使人颓废的往往不是前途的坎坷,而是你自信的丧失; 最使人痛苦的往往不是生活的不幸,而是你希望的破灭; 最使人绝望的往往不是挫折的打击,而是你心灵的死亡; 所以我们凡事要看淡些心放开一点一切都会慢慢变好的。 @创业最前线:【邵亦波:创业大成至少要过四关:用户,用势,用人,用己】第一关:用户是基础,好的创业者重视产品,对用户需...
2020-12-22
<div id="article_content" class="article_content clearfix" style="height: 1587px; overflow: hidden;"> <div class="blog-column-pay"> <a data-report-click="{"mod"...
seo相关文章
SEO 网址:http://blog.myspace.cn/xmmei/category/41652.aspx
五个等级SEOer的特征分析
顶尖的SEOer:
他们几乎不写博客、不回帖、不参与互联网的争论,每天专心耕耘自己的网站,赚钱很低调,生活很滋润。新浪的SEO不知道哪位负责的,我一直想认识一 下,感觉他是顶尖的。另外听说有某SEOer搞英文站做外贸,公司每月营业额好几百万但只有30几个员工,前台小姐的工资都在
Python 模块使用
Python 模块使用
分布式任务调度平台XXL-JOB
分布式任务调度平台XXL-JOB》 一、简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 1.2 特性 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章