网站改备案吗,福州外网站建设,无线网络建设方案,国家军事新闻头条12.14每日一题#xff08;备战蓝桥杯归并排序#xff09;
题目 归并排序
给定你一个长度为 n 的整数数列。
请你使用归并排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。
输入格式 输入共两行#xff0c;第一行包含整数 n。
第二行包含 n 个整数备战蓝桥杯归并排序
题目 归并排序
给定你一个长度为 n 的整数数列。
请你使用归并排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。
输入格式 输入共两行第一行包含整数 n。
第二行包含 n 个整数所有整数均在 1∼109 范围内表示整个数列。
输出格式 输出共一行包含 n 个整数表示排好序的数列。
数据范围 1≤n≤100000 输入样例 5 3 1 2 4 5 输出样例 1 2 3 4 5
题解 归并排序
#includeiostream
#includecstdio
using namespace std;
int n;
int a[100010],tmp[100010];
void merge_sort(int q[], int l, int r){if(l r) return ;int mid l r 1;merge_sort(a,l,mid);merge_sort(a,mid 1,r);int k 0 , i l , j mid 1;while(i mid j r){if(a[i] a[j]) tmp[k] a[i];else tmp[k] a[j];}while(i mid) tmp[k] a[i];while(j r) tmp[k] a[j];for(int i l,j 0 ; i r ; i,j) a[i] tmp[j];
}
int main()
{scanf(%d,n);for(int i 0 ; i n ; i){scanf(%d,a[i]);}merge_sort(a,0,n-1);for(int i 0 ; i n ; i){printf(%d ,a[i]);}return 0;
}