一、高精度算法——加法(c++)
#include<iostream>
#include<string.h>
#define MAXLEN 200
#define RMAXLEN 200
using namespace std;
string s1, s2;
int a[MAXLEN], b[MAXLEN], c[RMAXLEN];
string fun_sum(string s1, string s2)
{
memset(a, 0, sizeof(int) * MAXLEN);
memset(b, 0, sizeof(int) * MAXLEN);
memset(c, 0, sizeof(int) * RMAXLEN);
int len = s1.length();
for (int i = 0; i < len; i++)
{
a[len - 1 - i] = s1[i] - '0';
}
len = s2.length();
for (int i = 0; i < len; i++)
{
b[len - 1 - i] = s2[i] - '0';
}
if (len < s1.length())
{
len = s1.length();
}
for (int i = 0; i < len; i++)
{
c[i] = a[i] + b[i];
if (c[i] > 10)
{
c[i + 1] += c[i] / 10;
c[i] % 10;
}
}
if (c[len] > 0) {
len++;
}
string ans;
for (int i = len-1; i >=0; i--)
{
ans[i] += c[i] + '0';
}
return ans;
}
int main()
{
cin >> s1 >> s2;
string ans = fun_sum(s1, s2);
cout << ans;
return 0;
}
二、归并排序
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<time.h>
#define MAXSIZE 1000
int count;
void merge(int arr[], int low, int mid, int height, int* temp)
{
int i = low;
int j = mid + 1;
int k = low;
while (i <= mid && j < height)
{
temp[k++] = arr[i] < a[j] ? arr[i++] : arr[j++];
while (j <= mid)
{
temp[k++] = arr[j++];
}
while (i <= mid)
{
temp[k++] = arr[i++];
}
for (i = low; i <= height; i++)
{
for (i = low; i <= height; i++)
{
arr[i] = temp[i];
}
}
}
}
void merge_sort(int arr[], int low, int mid,int height, int* temp)
{
if (low >= height)
{
return;
}
int mid= low + (height - low) / 2;
merge_sort(arr, low, mid, temp);
merge_sort(arr, mid + 1, height, temp);
merge(arr, low, mid, height, temp);
}
void mergesort(int arr[], int length)
{
int* temp = (int*)malloc(sizeof(int) * length);
assert(temp);
merge_sort(arr, 0, length - 1, temp);
free(temp);
}
int main()
{
srand((unsigned int)time(NULL));
int arr[MAXSIZE];
mergesort(arr, MAXSIZE);
}