算法基础训练题(二)
来源:互联网 发布:sql select from 嵌套 编辑:程序博客网 时间:2024/06/07 11:41
C时间限制:1 毫秒 | C内存限制:1 Kb
输入描述
多组测试数据。首先输入一个整数N表示数组元素个数N然后输入N个整数
输出描述
输出N个整数在一行,用空格隔开
输入样例
5 5 4 3 2 1
输出样例
1 2 3 4 5
代码如下//归并排序(mergesort),是创建在归并操作上的一种有效排序算法,效率为O(nlogn)。其方法主要是用二分法加递归,先将所有的数二分法拆开,递归,拆的只有两个数,然后再用合并法排序,先两个数内部排好序,然后在合并,两个两个排好序的数再排成一个排好序的4个数,按照这样的方法把数排好。最后合成一组有序的数。
#include <iostream>
using namespace std;
using namespace std;
void Merge(int A[], int first, int mid, int last)
{
int temp[100];
int i = first, j = mid;
int k = 0;
while (i < mid && j < last)
if (A[i] < A[j])
temp[k++] = A[i++];
else
temp[k++] = A[j++];
while (i < mid)
temp[k++] = A[i++];
while (j < last)
temp[k++] = A[j++];
for (int v = 0; v < k; v++)
A[first + v] = temp[v];
}
void MergeSort(int A[], int first, int last)
{
if (first < last - 1)
{
int mid=(first+last)/2;
MergeSort(A,first,mid);
MergeSort(A,mid,last);
Merge(A,first,mid,last);
}
}
int main()
{
int A[100];
int N;
while(cin >>N )
{
for(int i=0;i<N;i++)
{
cin >>A[i];
}
MergeSort(A,0,N);
for(int i=0;i<N-1;i++)
{
cout << A[i] << " ";
}
cout << A[N-1] << endl;
}
}
0 0
- 算法基础训练题(二)
- 算法基础训练题(二)
- 算法基础训练(二)
- 算法基础训练题(一)
- 算法基础训练题(一)
- 算法基础训练题(一)
- 算法基础训练题(一)
- <基础训练>旅行家的预算(贪心算法)
- 蓝桥杯 基础训练题
- ACM基础训练题
- ios基础训练(一)
- 基础训练
- 基础训练
- C++-蓝桥杯基础训练-第12题-16进制转8进制高效算法
- 基础训练 完美的代价(贪心算法)
- 蓝桥杯 基础训练 完美的代价(转)
- 蓝桥杯基础训练图形显示(c/c++)
- 蓝桥杯-----------------基础训练 数列排序(Java代码)
- H264之ffmpeg解码
- 【HTML/XML 4】实例分析HTML和XML的不同
- vector<KeyPoint> vecKeyPoints 的数据结构
- 进程调度相关命令解析
- 算法 - 矩阵乘法
- 算法基础训练题(二)
- MySQL进阶
- annotation的几句注记
- 交换、路由与防火墙手记(9)- 三层vlan通信
- zTree学习笔记(一)
- jsp乱码问题的解决,java乱码
- Linux 中的 sed 命令详解
- android随笔20——控件的layout属性
- Android 自带的DownloadManager 在Service 中下载 apk 安装