- 合并两个数组vector
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int arr[3] = {1,3,5};
int arr1[3] = {2,4,6};
vector<int> vec1(arr,arr+3);
vector<int> vec2(arr1,arr1+3);
vector<int> vec3(6,0);
//vec2.insert(vec2.end(),vec1.begin(),vec1.end());
//sort(vec2.begin(),vec2.end());
merge(vec1.begin(),vec1.end(),vec2.begin(),vec2.end(),vec3.begin());
for (auto it= vec3.begin(); it != vec3.end(); it++)
{
cout << *it <<endl;
}
}
归并算法的实现
#include<iostream>
#include<vector>
using namespace std;
void merge(int arr[], int m, int l,int r)
{
int LEFT_SIZE = m-l;
int RIGHT_SIZE = r-m+1;
int left[LEFT_SIZE];
int right[RIGHT_SIZE];
for(int i=l;i<m;i++)
{
left[i-l] = arr[i];
}
for(int i=m;i<r+1;i++)
{
right[i-m] = arr[i];
}
int i=0;
int j=0;
int k=l;
while(i<LEFT_SIZE && j<RIGHT_SIZE)
{
if(left[i] < right[j])
{
arr[k++] = left[i++];
}else{
arr[k++] = right[j++];
}
}
while(i<LEFT_SIZE)
{
arr[k++] = left[i++];
}
while(j<RIGHT_SIZE)
{
arr[k++] = right[j++];
}
}
void sortMerge(int arr[],int l,int r)
{
if(l == r)
{
return;
}
else
{
int m = (l+r)/2;
sortMerge(arr,l,m);
sortMerge(arr,m+1,r);
merge(arr, m+1, l, r);
}
}
int main()
{
int arr[] = {3,1,2,8,7,6,4,9};
//merge(arr,0,4,7);
sortMerge(arr,0,7);
for(auto i :arr)
{
cout<<i<<endl;
}
return 0;
}
字符串的反转
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
void reverse(char* p,int n)
{
int i=0;
int j=n;
while(i <= j)
{
char temp = p[i];
p[i++] = p[j];
p[j--] = temp;
}
}
void reverse_each_word(char* p,int n)
{
reverse(p,n);
char* temp = p;
while(*temp != '\0')
{
char* subbegin = temp;
int count = 0;
while(*temp != '\0' && *temp != ' ')
{
count++;
temp++;
}
cout<<count<<endl;
reverse(subbegin,count-1);
temp++;
}
}
int main()
{
char s[] = "i am echoqian";
reverse_each_word(s,strlen(s)-1);
cout<<s<<endl;
}
二分查找
#include<iostream>
using namespace std;
int find(int arr[], int n, int key)
{
int low = 0;
int high = n-1;
while(low <= high)
{
int m=(low+high)/2;
if(arr[m] > key)
{
high = m-1;
}else if(arr[m] < key)
{
low = m+1;
}else if(arr[m] == key)
{
return m;
}
}
return -1;
}
int main()
{
int arr[] = {1,3,5,7,9};
cout<<find(arr,5,0)<<endl;
return 0;
}