博客
关于我
排序算法
阅读量:324 次
发布时间:2019-03-04

本文共 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;*/	}}

转载地址:http://wshq.baihongyu.com/

你可能感兴趣的文章
深入理解JavaScript函数
查看>>
【spring源码系列】之【xml解析】
查看>>
(在模仿中精进数据可视化07)星球研究所大坝分布可视化
查看>>
(数据科学学习手札02)Python与R在循环语句与条件语句上的异同
查看>>
(数据科学学习手札27)sklearn数据集分割方法汇总
查看>>
(数据科学学习手札40)tensorflow实现LSTM时间序列预测
查看>>
[整理] 哪些集合类是线程安全的?(Java)
查看>>
8 个警示和学习的 5 个阶段
查看>>
c# 图片带水纹波动
查看>>
H5 贪吃蛇源码
查看>>
从零开始学安全(十六)● Linux vim命令
查看>>
从零开始学安全(三十四)●百度杯 ctf比赛 九月场 sqli
查看>>
3389连接痕迹清除
查看>>
发生系统错误 6118
查看>>
阿里巴巴Json工具-Fastjson教程
查看>>
Spring Cloud Gateway - 快速开始
查看>>
Spring Security 实战干货:理解AuthenticationManager
查看>>
Java对象转JSON时如何动态的增删改查属性
查看>>
Python 面向对象进阶
查看>>
Linux常用统计命令之wc
查看>>