中南大学_算法设计及分析_实验报告.pdfVIP

  • 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)

1亿VIP精品文档

相关文档