- 9
- 0
- 约9.94千字
- 约 15页
- 2018-12-03 发布于浙江
- 举报
中南大学_算法设计及分析_实验报告
信安1502 赵家振
实验一:递归与分治
一、设计说明
(一)题目
快速排序算法
(二)算法思想
1.选择一个基准元素, 通常选择第一个元素或者最后一
个元素,
2.通过一趟排序讲待排序的记录分割成独立的两部分,
其中一部分记录的元素值均比基准元素值小。另一部分记录
的 元素值比基准值大。
3.此时基准元素在其排好序后的正确位置
4.然后分别对这两部分记录用同样的方法继续进行排序,
直到整个序列有序。
(三)算法示例
信安1502 赵家振
图 (a ):一次排序过程 图 (b ):完成排序过程
二、程序清单
#includestdio.h
#includestdlib.h
void swap(int *a,int *b) ;
void Quick_sort(int a[],int low,int high) ;
int partition(int a[],int low,int high);
int main()
{
int a[7]={49,38,65,97,76,13,27};
int k;
Quick_sort(a,0,6) ;
}
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b ;
*b=tmp;
}
void Quick_sort(int a[],int low,int high)
{
int k;
if(lowhigh) {
int NEW;
NEW=partition(a,low,high) ;
for(k=0;k7;k++)
printf(%d , a[k]);
信安1502 赵家振
printf(\n);
Quick_sort(a,low,NEW-1);
Quick_sort(a,NEW+1,high);
}
}
int partition(int a[],int low,int high)
{
int key;
key=a[low];
while(lowhigh){
while(lowhighkey=a[high])
--high ;
swap(a[low],a[high]);
while(lowhighkey=a[low])
++low;
swap(a[low],a[high]);
}
return low ;
}
三、实验结果
信安1502 赵家振
实验二:回溯
一、设计说明
(一)题目
8 皇后问题
(二)算法思想
int a[100], n;
main() {
input(n);
backtrack(1) ;
}
backtrack(int k) {
if (kn) 输出当前结果,继续搜索
else
for (int i = 1;i =n; i++)
{ a[k] = i;
if (check2(a,k) = 1)
backtrack(k+1);
if (!check(k) a[k]==n) a[k] = 0;
}
}
(三)算法示例
原创力文档

文档评论(0)