1.快排

int Huafen(int A[],int L,int R){
	int mid = A[L];
	while(L < R){
		while(A[R] >= mid && L < R)
			R--;
		A[L] = A[R];
		while(A[L] <= mid && L < R)
			L++
		A[R] = A[L];
	}
	A[L] = mid;
	return L;
}
void QSort(int A[],int L,int R){
	if(L >= R)
		return;
	int mid = Huafen(A,L,R);
	QSort(A,L,mid-1);
	QSort(A,mid+1,R); 
}

2.两个有序数组合并为一个新的有序数组(归并)

void merge(int a[],int b[],int m,int n){//m,n为数组长度
	int c[m+n];
	int i = 0,j=0,k=0;
	while(i<m && b<n){
		if(a[i] < b[j]){
			c[k++] = a[i++];
		}
		else{
			c[k++] = b[j++];
		}
	}
	while(i < m)
		c[k++] = a[i++];
	while(j < n)
		c[k++] = b[j++];
	return ;
}

3.数组元素原地逆置

void reverse(int a[],int n){
	for(int i = 0; i < n/2; i++){
		int temp = a[i];
		a[i] = a[n-i-1]
		a[n-i-1] = temp;
	}
	return ;
}

4.删除数组中所有值为x的元素

//暴力
void delete_x(int a[],int x,int n){
	for(int i = 0; i < n; i++){
		if(a[i] == x){
			for(int j = i; j < n; j++){
				a[j] = a[j+1];
			}
		}
	}
	return ;
}
//最优
void delete_x(int a[],int x,int n){
	int count_x= 0;//记录元素x出现的次数
	int i = 0;
	while(i < n){
		if(a[i] == x){
			count_x++;
			i++;
		}
		else{
			a[i-count_x] = a[i]
			i++;
		}
	}//while end
	return ;
}

5.删除值在s与t之间的元素

bool func(int a[],int s,int t,int n){//n为数组长度
	if(s > t)
		return false;
	int count = 0;//记录值在(s,t)内元素的个数
	int i = 0;
	while(i < n){
		if(a[i]>=s && a[i]<=t){
			count++;
			i++;
		}
		else{
			a[i-count] = a[i];
			i++;
		}
	}
	return true;
}

6.删除有序数组中值重复的元素,使剩下的元素值均不相同

void delete_same(int a[],int n){
	for(int i = 0,j = 1; j < n; j++){
		if(a[i] != a[j]){
			i++;
			a[i] = a[j];
		}
	}
	return ;
}

7.将数组中两个顺序表位置互换(a1,a2,a3,b1,b2,b3)→(b1,b2,b3,a1,a2,a3)

void reverse(int a[],int l,int r){
	for(int i = l; i < (r-l)/2; i++){
		int temp = a[i];
		a[i] = a[r-i-1]
		a[r-i-1] = temp;
	}	
}

void swap(int c[]){
	reverse(c,0,m);
	reverse(c,m+1,m+n-1);
	reverse(c,0,m+n-1)
}