算法实验1《分治算法实验》
来源:互联网 发布:mac压缩包加密 编辑:程序博客网 时间:2024/05/22 10:54
1.编写一个简单的程序,实现归并排序。
#include<iostream>using namespace std;void merge(int list[],int left,int m,int right){int b[10];int i=left,j=m+1,k=left;while(i<=m && j<=right){if(list[i]<list[j])b[k++]=list[i++];else b[k++]=list[j++];}if(i>m)for(int q=j;q<=right;q++)b[k++]=list[q];else for (int q=i;q<=m;q++)b[k++]=list[q];for(int ii=left;ii<=right;ii++){list[ii]=b[ii];}}void mergeSort(int list[],int left,int right){if(left<right){int i=(left+right)/2;mergeSort(list,left,i);mergeSort(list,i+1,right);merge(list,left,i,right);}}int main(){int list[10];for(int i=0;i<10;i++){cin>>list[i];}mergeSort(list,0,9);for(int i=0;i<10;i++){cout<<list[i]<<" ";}system("pause>nul");return 0;}
2.编写一段程序,实现快速排序。
#include<iostream>using namespace std;int par(int a[],int p,int r){int i=p,j=r+1;int x=a[p];while(1){while(a[++i]<x && i<r);while(a[--j]>x);if(i>=j)break;int te=a[i];a[i]=a[j];a[j]=te;}a[p]=a[j];a[j]=x;return j;}void qSort(int list[],int p,int r){if(p<r){int q=par(list,p,r);qSort(list,p,q-1);qSort(list,q+1,r);}}int main(){int list[10];for(int i=0;i<10;i++){cin>>list[i];}qSort(list,0,9);for(int i=0;i<10;i++){cout<<list[i]<<" ";}system("pause>nul");return 0;}
3.编写程序实现循环赛日程表。设有n=2k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其它n-1个选手各赛一次(2)每个选手一天只能赛一场(3)循环赛进行n-1天
#include<iostream>#include<iomanip>using namespace std;int main(){int k;while (cin >> k){int n = 1;for (int i = 1; i <= k; i++)n *= 2;int **p;p = new int*[n + 1];for (int i = 0; i <= n; i++){p[i] = new int[n + 1];}for (int i = 1; i <= n; i++)p[1][i] = i;int m = 1;for (int s = 1; s <= k; s++){n /= 2;for (int t = 1; t <= n; t++)for (int i = m + 1; i <= 2 * m; i++)for (int j = m + 1; j <= 2 * m; j++){int temp = j + (t - 1)*m * 2;p[i][temp] = p[i - m][temp - m];p[i][temp - m] = p[i - m][temp];}m *= 2;}n = 1;for (int i = 1; i <= k; i++)n *= 2;for (int i = 1; i <= n; i++){cout << endl << setw(2) << p[i][1] << " ";for (int j = 2; j <= n; j++){cout << setw(4) << p[i][j] << " ";}}}system("pause>nul");return 0;}
阅读全文
0 0
- 算法实验1《分治算法实验》
- 南邮算法分析与设计实验1 分治策略
- 算法实验之分治法求中位数
- 算法实验之分治法求中位数
- 递归与分治算法实验报告
- 分治算法实验-单峰序列问题
- 分治法求和-算法设计实验2
- 算法实验报告1
- 算法实验
- 算法分析与设计实验一 分治策略
- 算法实验课(递归和分治法)
- 分治法求和C语言-算法设计实验2
- 实验二 分类算法实验
- 实验1:二分搜索算法
- 算法实验一 TEST #1
- 算法实验二 TEST #1
- 算法实验2《贪心算法实验》
- 算法实验3《动态规划算法实验》
- user account control用户帐户控制
- clipboard.js 复制到剪贴板
- 跨域的问题
- Listview下啦刷新
- angularjs作用域及其生命周期
- 算法实验1《分治算法实验》
- JAVA-Swing图形化界面之事件监听1
- java学习初探十八之线程的线程同步_锁机制_synchronized
- python函数的知识点:
- Attention
- Python 生成一组随机数列表
- 开心斗地主【多组实例测试】
- 原生无框架JDBC实现数据库连接和Servlet页面的基本操作
- Linux 中 创建用户、设置密码、切换用户 的方法