手机网站免费的,建设众筹类网站,凡科门店通怎么样,凡科免费网站建设/*
归并排序#xff1a;不断将数组切分为两部分递归切分直到数组长度为1#xff0c;之后逐渐有序合并
*/
#include cstdio
#include iostream
#include cmath
using namespace std;//归并 小--大
void Merge(int a[], int s, int m, int e, int … /*
归并排序不断将数组切分为两部分递归切分直到数组长度为1之后逐渐有序合并
*/
#include cstdio
#include iostream
#include cmath
using namespace std;//归并 小--大
void Merge(int a[], int s, int m, int e, int tmp[]) {int iter s;int it1 s, it2 m1;while(it1 m it2 e) {if(a[it1] a[it2]) tmp[iter] a[it1];else tmp[iter] a[it2];}while(it1 m)tmp[iter] a[it1];while(it2 e)tmp[iter] a[it2];for(int is; ie; i) {a[i] tmp[i];}return;
}
void MergeSort(int a[], int s, int e, int tmp[]) {if(s e) {int m s (e-s)/2;MergeSort(a, s, m, tmp);MergeSort(a, m1, e, tmp);Merge(a, s, m, e, tmp);}return;
}
int a[] {13, 12, 23, 5, 2, 34, 11, 34, 13};
int tmp[100];
int main() {int size sizeof(a) / sizeof(int);MergeSort(a, 0, size-1, tmp);for(int i0; isize; i)printf(%d , a[i]);
} /*快排主要思想寻找切分元素之后两边分治处理
*/
#include iostream
#include cstdio
using namespace std;
const int maxn 1e5 10;
int num[maxn];
int n;
inline void quik_sort(int s, int e)
{//mid为切分元素int mid num[s(e-s)/2];// i 左侧指针找到第一个不小于切分元素mid的数i指向mid// j 右侧指针找到第一个不大于切分元素mid的数j指向midint i s, j e;while(i j) {while(num[i] mid) i 1;while(num[j] mid) j - 1;if(j i) {swap(num[i], num[j]);i 1, j - 1;}}//跳出后j i, 分成两部分继续if(s j) quik_sort(s, j);if(e i) quik_sort(i, e);return;
}
int main() {scanf(%d, n);for(int i1; in; i) scanf(%d, numi);quik_sort(1, n);for (int i 1; i n; i){printf(%d , num[i]); }return 0;
} #include cstdio
#include iostream
using namespace std;
int Mod ;//将指数二进制化也可以尝试其他进制
int quick_pow(int base, int t) {int ans 1;while(t) {if(t 1) {ans (ans%Mod)*(base%Mod); ans % Mod;}base (base*base) % Mod;t 1;}return ans;
}
int main()
{int base, t;scanf(%d %d %d, base, t, Mod);printf(%d^%d mod %d%d\n, base, t, Mod, quick_pow(base, t));return 0;
} 转载于:https://www.cnblogs.com/GorgeousBankarian/p/11243739.html