快排
void quick_sort(int a[],int l,int r){
if(l>=r)return;
int i=l-1,j=r+1,pivot=a[l],temp=0;
while(i<j){
do i++;while(a[i]<pivot);
do j--;while(a[j]>pivot);
if(i<j){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
quick_sort(a,l,j);
quick_sort(a,j+1,r);
}
二分查找
void Findnum(int a[], int key,int n)
{
int left = 0;//数组从a[0]开始
int right = n-1;//从a[n-1]结束
while (left <= right)
{
int mid = (right + left) / 2;
if (arr[mid] > key)
{//说明key在arr[mid]和left之间
right = mid - 1;
}
else if (arr[mid] < key)
{
left = mid + 1;
}
else
{
break;
}
}
if (left > right) return;
}
归并
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
int i=0,j=0,k=0;
int *tmp=(int*)malloc(sizeof(int)*(m+n));
while(i<m&&j<n){
if(nums1[i]<nums2[j]){
tmp[k++]=nums1[i++];
}
else{
tmp[k++]=nums2[j++];
}
}
while(i<m)tmp[k++]=nums1[i++];
while(j<n)tmp[k++]=nums2[j++];
for(i=0;i<m+n;i++){
nums1[i]=tmp[i];
}
}