课程设计题目排序Word格式.docx

上传人:b****5 文档编号:20719334 上传时间:2023-01-25 格式:DOCX 页数:18 大小:44.22KB
下载 相关 举报
课程设计题目排序Word格式.docx_第1页
第1页 / 共18页
课程设计题目排序Word格式.docx_第2页
第2页 / 共18页
课程设计题目排序Word格式.docx_第3页
第3页 / 共18页
课程设计题目排序Word格式.docx_第4页
第4页 / 共18页
课程设计题目排序Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

课程设计题目排序Word格式.docx

《课程设计题目排序Word格式.docx》由会员分享,可在线阅读,更多相关《课程设计题目排序Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

课程设计题目排序Word格式.docx

//快速排序快速排序是对冒泡排序的一种改进

voidquicksortx(Data);

voidtowmerge(Data&

Data&

int,int,int);

//二路归并排序算法

voidmergepass(Data&

int);

//一趟2路归并算法

voidmergesort(Data,Data);

//2-路归并算法

list(){}

voiddisplay(Data);

voidshow(int);

Datagetdata1(int);

Datagetdata2();

voidplay1(int);

voidplay2();

voidplay3();

intlist:

:

remove=0;

compare=0;

Datalist:

getdata1(intlength)

Datadata;

data.length=length;

srand((int)time(0));

for(inti=0;

i<

length;

i++)

{

data.dt[i]=random(1000);

}

pare=0;

data.remove=0;

returndata;

}

getdata2()

intn=0;

intm;

cout<

<

"

请输入待输入数据的个数:

\n"

;

cin>

>

n;

data.length=n;

cout<

请输入第"

i+1<

个数据:

cin>

m;

data.dt[i]=m;

voidlist:

display(Datadata)

data.length;

data.dt[i]<

"

if((i+1)%10==0)

cout<

endl;

insertsort(Datadata,inth)//直接插入排序

for(inti=1;

n=data.dt[i];

intj=i-1;

while(j>

=0&

&

data.dt[j]>

n)

{

data.dt[j+1]=data.dt[j];

data.remove++;

j--;

}

data.dt[j+1]=n;

pare+=data.remove+data.length-1;

if(h==1)

比较结果为:

display(data);

\n其中\n"

直接插入排序--"

比较次数:

pare<

移动次数:

data.remove<

binsertsort(Datadata)//折半插入排序

intj=0;

intlow=0;

inthigh=0;

intmiddle=0;

low=0;

high=i-1;

while(low<

=high)

pare++;

middle=(low+high)/2;

if(data.dt[middle]>

high=middle-1;

else

low=middle+1;

for(j=i-1;

j>

high;

j--)

data.dt[high+1]=n;

//cout<

======================================\n"

折半插入排序--"

//display(data);

selectsort(Datadata)//直接选择排序

intj=i;

for(intk=j+1;

k<

k++)

if(data.dt[j]>

data.dt[k])

j=k;

if(j!

=i)

ints=data.dt[i];

data.dt[i]=data.dt[j];

data.dt[j]=s;

直接选择排序--"

//display(data);

bubblesort(Datadata)//冒泡排序

for(inti=data.length-1;

i>

0;

i--)

for(intj=0;

j<

i;

j++)

{

data.dt[j+1])

{

n=data.dt[j];

data.dt[j]=data.dt[j+1];

data.dt[j+1]=n;

data.remove++;

}

冒泡排序--"

//display(data);

quicksort(Data&

data,ints,intt)//快速排序

intn;

inti=s;

intj=t;

if(j>

i)

do{

while(j>

i&

=n)

j--;

pare++;

if(j>

data.dt[i]=data.dt[j];

i++;

=n)

data.dt[j]=data.dt[i];

}while(j>

i);

data.dt[i]=n;

quicksort(data,s,i-1);

quicksort(data,j+1,t);

quicksortx(Datadata)

quicksort(data,0,data.length-1);

快速排序--"

shellsort(Datadata)//希尔排序

inti=0,j=0,gap=0;

gap=data.length/2;

while(gap>

0)

for(i=gap;

j=i-gap;

=0)

if(data.dt[j]>

data.dt[j+gap])

{

n=data.dt[j+gap];

data.dt[j+gap]=data.dt[j];

data.dt[j]=n;

j=j-gap;

data.remove++;

}

else

j=-1;

gap=gap/2;

希尔排序--"

}

towmerge(Data&

data1,Data&

data2,ints,intm,intt)

inti,j,k;

i=s;

j=m+1;

k=s;

while(i<

=m&

=t)

compare++;

if(data1.dt[i]<

=data1.dt[j])

data2.dt[k]=data1.dt[i];

k++;

i++;

else

data2.dt[k]=data1.dt[j];

remove++;

j++;

while(i<

=m)

while(j<

mergepass(Data&

data,Data&

r,intlen)

intp=0;

while(p+2*len-1<

data.length)

towmerge(data,r,p,p+len-1,p+2*len-1);

p=p+2*len;

if(p+len-1<

data.length-1)

towmerge(data,r,p,p+len-1,data.length-1);

else

for(inti=p;

r.dt[i]=data.dt[i];

mergesort(Datadata,Datar)//2-路归并算法

intlen;

len=1;

while(len<

mergepass(data,r,len);

len=len*2;

mergepass(r,data,len);

二路归并排序--"

compare<

remove<

play1(intq)

Datar;

r.length=0;

r.remove=0;

list:

list:

data=getdata1(q);

r.length=q;

原始数据为:

display(data);

/*cout<

其中\n"

*/

insertsort(data,1);

binsertsort(data);

selectsort(data);

bubblesort(data);

shellsort(data);

quicksortx(data);

mergesort(data,r);

play2()

data=getdata2();

r.length=data.length;

play3()

Datadata[3];

Datad[3];

Datar[3];

3;

r[i].length=0;

r[i].remove=0;

data[0]=getdata1(10);

第一组,随机产生十个数:

display(data[0]);

==================\n"

data[1]=getdata1(50);

第二组,随机产生五十个数:

display(data[1]);

data[2]=getdata1(100);

第三组,随机产生一百个数:

display(data[2]);

d[0]=insertsort(data[0],0);

d[1]=insertsort(data[1],0);

d[2]=insertsort(data[2],0);

第一组\n"

display(d[0]);

第二组\n"

display(d[1]);

第三组\n"

display(d[2]);

d[0].compare<

d[0].remove<

d[1].compare<

d[1].remove<

d[2].compare<

d[2].remove<

=======================\n"

binsertsort(data[0]);

binsertsort(data[1]);

binsertsort(data[2]);

selectsort(data[0]);

selectsort(data[1]);

selectsort(data[2]);

bubblesort(data[0]);

bubblesort(data[1]);

bubblesort(data[2]);

shellsort(data[0]);

shellsort(data[1]);

shellsort(data[2]);

quicksortx(data[0]);

quicksortx(data[1]);

quicksortx(data[2]);

r[0].length=10;

mergesort(data[0],r[0]);

r[1].length=50;

mergesort(data[1],r[1]);

r[2].length=100;

mergesort(data[2],r[2]);

插入排序\n直接插入排序是一种稳定的排序\n折半插入排序减少了记录关键字之间的比较次数,而未改变记录的移动次数\n"

希尔排序是对直接插入排序的一种改进算法,它是一种不稳定的排序方法\n"

交换排序:

\n冒泡排序是一种简单的交换排序,是一种稳定的排序方法\n快速排序是对冒泡排序的一种改进是一种不稳定的排序方法\n"

归并排序是一种不稳定的排序\n"

voidmain()

lists;

while

(1){

\n***主菜单***"

+++++++++++++++++++++++++++++++++++++"

||||"

||1.随机生成十个数||"

||2.随机生成三十个数||"

||3.随机生成五十个数||"

||4.随机生成一百个数||"

||5.对比||"

||6.键盘输入任意个数||"

||0=>

退出||"

++++++++++++++++++++++++++++++++++++"

请选择:

switch(n)

case1:

s.play1(10);

break;

case2:

s.play1(30);

case3:

s.play1(50);

case4:

s.play1(100);

case5:

s.play3();

case6:

s.play2();

case0:

exit(0);

default:

输入错误!

请重新输入"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1