合并有序数组的实现(java与C语言)
程序员文章站
2023-12-20 08:31:46
合并有序数组的实现
java版本:
实例代码
public class merge {
//合并有序数组
public static void...
合并有序数组的实现
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> // 打印数组a void 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语言实现合并有序数组的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!