排序算法
发布日期:2021-05-07 02:41:58 浏览次数:24 分类:精选文章

本文共 1405 字,大约阅读时间需要 4 分钟。

归并算法

#include
#include
#include
#include
#include
#include
#include
using namespace std;const int maxn = 100010;void merge(int a[], int l1, int r1, int l2, int r2) { int temp[maxn]; int index = 0; int i = l1, j = l2; while (i <= r1 && j <= r2) { if (a[i] <= a[j]) { temp[index++] = a[i++]; } else { temp[index++] = a[j++]; } } if (i == r1 + 1) { while (j <= r2) { temp[index++] = a[j++]; } } if (j == r2 + 1) { while (i <= r1) { temp[index++] = a[i++]; } } for (int i = 0; i < index; i++) { a[l1 + i] = temp[i]; }}void printArray(int a[], int n) { for (int i = 0; i < n; i++) { printf("%d", a[i]); if (i != n - 1) { printf(" "); } } printf("\n");}void mergeSort(int a[], int n) { for (int step = 1; step <= n; step *= 2) { for (int i = 0; i < n; i += (step * 2)) { //对每一组 int second_array_first = i + step; if (second_array_first < n) { merge(a, i, second_array_first - 1, second_array_first, min(i + 2 * step - 1, n-1)); } } }}int main() { int a[] = { 1,3,2,4,4,2 }; mergeSort(a, 6); printArray(a,6);}

找素数

const int maxn = 10000001;int prime[maxn], pnum = 0;bool p[maxn] = {    true };void find_prime() {   	memset(p, true, sizeof(p));	for (int i = 2; i < maxn; i++) {   		if (p[i] == true) {   			prime[pnum++] = i;			for (int j = i * 2; j < maxn; j += i) {   				p[j] = false;			}		}		/*if (pnum > n)			break;*/	}}
上一篇:getsockname
下一篇:微信小程序

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月06日 04时42分41秒