查找排序实验四作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
查找排序实验四作业
试验四:查找、排序
一、实验描述:
1. 简单选择排序算法验证
实验目的
⑴掌握简单选择排序算法的基本思想;
⑵ 掌握简单选择排序算法的实现方法;
⑶ 验证简单选择排序算法的时间性能。
实验内容
对一组数据进行简单选择排序(按升序排列)。
算法思想与设计
1. 采用单链表进行排序操作;
2. 简单选择排序的基本思想:对待排序进行若干趟处理,通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小记录和第i(1<=i<=n)个记录进行交换,这样一趟处理就能确定一个数的
位置,对n个数如果确定n-1个数的位置,则这n 个数就排序成功。
3. 选择排序算法的时间复杂度为O(n2)。并且排序是稳定的。
算法设计
1.数据结构设计
使用一个简单的链表作为选择排序的操作对象。
//单链表结构体定义
class Si ngleL ink{
private int idata;
public int Data;
{
get{return idata;}
set{idata=value;} }
public Sin gleL ink n ex t; public Sin gleL in k(){
idata = -1;
n ext =n ull;
} public Sin gleL in k(i nt data){ idata = -1;
n ext = nu II;
}
}
2. 算法流程图:
2.1初始化单链表
循环在单
链表尾部
初始化完
2.2简单选择排序
i++ 否
排序数据中
返回
3. 代码算法实现
3.1单链表初始化
Randomr= new Random();〃从1 〜100 间产生数
list.clear();〃清空单链表
for(i nt i = 0; i < dlbl on g;i++){
list.I nsert(r.Next(100));〃节点插入操作f++;
}
TextBox1.Text = list.Disply();〃返回整个单链表显示
3.2单链表选择排序
y = head;
flag = head .n ex t;
int n = 0,i,j,temp=0,biaoji;
y = head .n ex t;
p = head .n ex t;
q = head .n ex t;
for(i = 0 ; i < n -1;i++){
flag = p;
q = p;
biaoji = q.Data;
for(j=i;j< n-1;j++){
if(q.n ext.Data < biaoji){
flag = q.n ex t;
fiaoji = q.n ext.Data;
}
q=q.n ex t;
}
temp = p.Data;
p.Data = flag.Data;
flag.Data = temp;
P = p.n ex t;
}
retur n true;
4. 测试
采用黑盒测试方法测试。
返回相应结输入所需单链表长度及初始化序列;
5. 测试总结
反复测试符合设计要求,未出现异常;软件运
行正常