栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【数据结构实验】上机实验11:几种典型排序算法的实现编程实现:分别利用直接插入/折半插入/希尔/冒泡/快速/简单选择排序算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【数据结构实验】上机实验11:几种典型排序算法的实现编程实现:分别利用直接插入/折半插入/希尔/冒泡/快速/简单选择排序算法

一、实验要求

上机实验题11:几种典型排序算法的实现

编程实现:分别利用直接插入/折半插入/希尔/冒泡/快速/简单选择排序算法实现将待排序序列{3,6,2,10,1,20,88,8,5,7,4,9}由小到大排序,并输出结果。

二、实验源代码和运行结果 (一)源代码
#include
using namespace std;
typedef int ElemType;
#define N 20
typedef struct
{
ElemType key;
}RecType;
RecType t;//用于交换的变量t定义成全局
//冒泡排序
void BubbleSort(RecType R[],int n)
{
	int i,j;
	for(i=0;iR[j+1].key)
			   {
				   t.key=R[j].key;
				   R[j].key=R[j+1].key;
				   R[j+1].key=t.key;
		       }
}

//选择排序
void SelectSort(RecType R[],int n)
{
	int i,j,k;
	for(i=0;iR[j].key)
				k=j;
		if(k!=i)
		{
		 t.key=R[k].key;
	     R[k].key=R[i].key;
		 R[i].key=t.key;
		}
}
}
//直接插入排序
void InsertSort(RecType R[],int n)
{
int i,j;
for(i=0;i=0&&R[j].key>t.key);//停止条件有两个,要么有序区已经遍历移动完毕,要么有序区已经遍历到第一个小于待插入元素的数,就可以进行插入了(此时待插入元素要插在找到的元素下一个位置)
R[j+1]=t;//2.这句写在了下面那个花括号后面,导致调用display函数后的结果全是地址
}//1.忘记在for循环下加花括号了,导致if下面的语句成顺序执行了,只执行一遍	
}
}
//折半插入
void BinInsertSort(RecType R[],int n)
{
int i,j,low,high,mid;
for(i=1;i=high+1;j--)
		R[j+1]=R[j];
	R[high+1]=t;
	}
}
}
//希尔排序
void ShellSort(RecType R[],int n)
{
int i,j,d;
d=n/2;
while(d>0)
{
for(i=d;i=0&&t.keyi&&R[j].key>=tmp.key)
		j--;
	R[i]=R[j];
	while(i>x;
	while(!(x==1||x==2||x==3||x==4||x==5||x==6))//如果输入错误就重新输入
	{
	system("cls");//清屏,更简洁
	cout<<"输入错误请重新输入!"<>x;
	}
	cout<<"排序后的序列为:"< 
(二)运行结果 

三、实验总结

 这个实验,关键不是代码,而是这几种排序算法的核心思想,虽然搞懂它真的很费时间,但是一旦你明白了,在脑子里有个大体框架,就不会拘泥于代码层面。

以上仅是个人见解,狗头保命

 

实验课终于结束了,我终于不用每个周四晚上狂写10页实验报告,写到手指抽搐。我们这个老师,真的很让我痛苦。数据结构理论课,会在学习通布置很多视频和练习题,一章大概七八小节,一节一套练习题,一套3大概0来个题,有选择有填空。大概是这个样子的

 我真的会谢好吗,太多了,每天我课余时间,不是在补数据结构实验,就是在刷数据结构视频和做题,真的很心累。我太想放假了呜呜呜

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号