程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 88 Merge Sorted Array,mergesorted

88 Merge Sorted Array,mergesorted

編輯:C++入門知識

88 Merge Sorted Array,mergesorted


Given two sorted integer arrays A and B, merge B into A as one sorted array.

Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are mand n respectively.

題目大概的意思就是給出兩個已經排序好的數組,合並這兩個數組並要求仍然有序。

 1 class Solution {
 2 public:
 3     void merge(int A[], int m, int B[], int n) {
 4         int i,j,k;
 5         for(k=m+n-1,i=m-1,j=n-1;k>=0;k--){
 6             if((A[i]>B[j]||j<0)&&(i>=0)){
 7                 A[k]=A[i--];
 8             }else{
 9                 A[k]=B[j--];
10             }
11         }
12     }
13 };

代碼比較簡單,簡單的說一下思路,

新數組的長度是m+n,從新數組的最後一個元素開始循環插入數組

if((A[i]>B[j]||j<0)&&(i>=0)) 這句代碼可以這樣理解,對應著兩種情況:

情況一 如果數組A當前下標的元素大於數組B當前下標的元素並且數組A沒有循環結束 

情況二 如果數組B的元素已經循環完而數組A的元素還沒有循環完

這兩種情況下就將元素保存到新的數組A中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved