• Merge Sorted Array


    如果另外开辟一个数组C,A,B从头开始比较,谁小,谁最先放到中,题上说最后都放到A中,那么就扫描C,复制数据就行了,时间复杂度O(m+n),空间复杂度O(m+n)

    当然还有比这个好的办法,空间复杂度O(1).

     1     void merge(int A[], int m, int B[], int n) {
     2         int C[m+n];
     3         int i=0,j=0,k=0;
     4         while(i<m&&j<n){
     5             if(A[i]<=B[j]){
     6                 C[k]=A[i];
     7                 i++;
     8                 k++;
     9             }
    10             else{
    11                 C[k]=B[j];
    12                 j++;
    13                 k++;
    14             }
    15         }
    16         if(i<m){
    17             C[k]=A[i];
    18             k++;
    19             i++;
    20         }
    21         else if(j<n){
    22             C[k]=B[j];
    23             k++;
    24             j++;
    25         }
    26         for(i=0;i<k;++i)
    27             A[i]=C[i];
    28     }

    Status: Wrong Answer

    Input: [1,2,3], [2,5,6]
    Output: [1,2,2,3,5,513]
    Expected: [1,2,2,3,5,6]

    呃,在codeblocks中调试时才发现16-25写错的。

    不应该是if,应该是while哇······(其实我犯这错误不是一次两次啦)

     从后向前比,空间复杂度O(1)

     1     void merge(int A[], int m, int B[], int n) {
     2         int i,j,k;
     3         i=m-1;
     4         j=n-1;
     5         k=m+n-1;
     6         while(i>=0&&j>=0){
     7             if(A[i]<B[j]){
     8                 A[k]=B[j];
     9                 j--;
    10             }
    11             else{
    12                 A[k]=A[i]; 
    13                 i--;
    14             }
    15             k--;
    16         }
    17         while(i>=0){
    18             A[k]=A[i];
    19             k--;
    20             i--;
    21         }
    22         while(j>=0){
    23             A[k]=B[j];
    24             k--;
    25             j--;
    26         }
    27     }
  • 相关阅读:
    JQ轮播
    JS中正则匹配的三个方法match exec test的用法
    JavaScript 表单验证
    JS 控制CSS样式表
    AJAX 的简单用法:
    shell之运用sed将其值存到变量
    shell之创建文件及内容
    修复vbox的共享文件夹的符号链接错误
    字符转码
    php魔术方法
  • 原文地址:https://www.cnblogs.com/crane-practice/p/3617969.html
Copyright © 2020-2023  润新知