|
发表于 2021-10-31 13:06:09
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2021-10-31 13:08 编辑
- #include <stdio.h>
- void merge(int a[] , int n , int b[] , int m)
- {
- int i , j , k ;
- if(n > 1 && m > 1) {
- if(a[1] > a[0] && b[1] > b[0] || a[1] < a[0] && b[1] < b[0]) {
- if(a[1] > a[0]) {
- for(i = 0 ; i < n ; i ++) {
- for(j = 0 ; j < m && b[j] < a[i] ;) {
- for(k = n ; k > i ; k --) a[k] = a[k - 1] ;
- a[i] = b[j] ;
- for(k = j + 1 ; k < m ; k ++) b[k - 1] = b[k] ;
- n ++ ;
- m -- ;
- }
- }
- } else {
- for(i = 0 ; i < n ; i ++) {
- for(j = 0 ; j < m && b[j] > a[i] ;) {
- for(k = n ; k > i ; k --) a[k] = a[k - 1] ;
- a[i] = b[j] ;
- for(k = j + 1 ; k < m ; k ++) b[k - 1] = b[k] ;
- n ++ ;
- m -- ;
- }
- }
- }
- }
- }
- }
- int main(void)
- {
- int a[10] = {3 , 5 , 6 , 8 , 10} , b[5] = {1 , 2 , 4 , 7 , 9} , i ;
- int c[10] = {9 , 7 , 4 , 2 , 1} , d[5] = {10 , 8 , 6 , 5 , 3} ;
- merge(a , 5 , b , 5) ;
- for(i = 0 ; i < 10 ; i ++) printf(" %d" , a[i]) ;
- printf("\n") ;
- merge(c , 5 , d , 5) ;
- for(i = 0 ; i < 10 ; i ++) printf(" %d" , c[i]) ;
- printf("\n") ;
- }
复制代码
编译、运行实况:
- D:\00.Excise\C>g++ -o x x.c
- D:\00.Excise\C>x
- 1 2 3 4 5 6 7 8 9 10
- 10 9 8 7 6 5 4 3 2 1
- D:\00.Excise\C>
复制代码 |
|