首页 > 开发 > Java > 正文

合并有序数组的实现(java与C语言)

2024-07-13 10:10:25
字体:
来源:转载
供稿:网友

合并有序数组的实现

java版本:

实例代码

public class Merge {  //合并有序数组  public static void mergeSort(int a[], int b[], int c[]) {    int n = a.length, m = b.length;    int i, j, k;    i = j = k = 0;    while (i < n && j < m) {      if (a[i] < b[j]) {        c[k++] = a[i++];      } else {        c[k++] = b[j++];      }    }    while (i < n)      c[k++] = a[i++];    while (j < m)      c[k++] = b[j++];  }  //打印数组中的元素  public static void printArr(int a[]) {    for (int i = 0; i < a.length; i++) {      System.out.print(a[i] + "/t");    }  }  public static void main(String[] args) {    System.out.println("Hello World!");    int[] a = new int[] { 1, 2, 5, 6 };    int[] b = new int[] { 3, 8, 9, 10 };    int c[] = new int[8];    mergeSort(a, b, c);    printArr(c);  }}

输出结果:

1  2  3  5  6  8  9  10

C语言版

实现代码:

#include <stdio.h>// 打印数组avoid printArr(int a[],int n){  for (int i = 0; i < n; ++i)  {    printf("%d/t",a[i]);  }  printf("/n");}//合并有序数组void mergeArray(int a[],int n,int b[],int m,int c[]){  int i, j, k;   i = j = k = 0;   while (i <n && j<m)   {     if (a[i] < b[j])       c[k++] = a[i++];     else       c[k++] = b[j++];    }   while (i < n)     c[k++] = a[i++];   while (j < m)     c[k++] = b[j++]; }int main(){  int a[3]={2,3,6};  int b[2]={1,5};  int c[5]={};  mergeArray(a,3,b,2,c);  printArr(c,5);}

输出结果:

yaopans-MacBook-Pro:algorithm yaopan$ ./a.out 1  2  3  5  6

以上就是java与C语言实现合并有序数组的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表