最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

歸并算法之有序數(shù)組合并算法實現(xiàn)

 更新時間:2017年07月03日 09:49:34   投稿:lqh  
這篇文章主要介紹了歸并算法之有序數(shù)組合并算法實現(xiàn)的相關(guān)資料,需要的朋友可以參考下

歸并算法之有序數(shù)組合并算法實現(xiàn)

一個簡單的有序數(shù)組合并算法:寫一個函數(shù),傳入 2 個有序的整數(shù)數(shù)組,返回一個有序的整數(shù)數(shù)組。實現(xiàn)相當(dāng)簡單,創(chuàng)建一個長度為這兩個長度之和的數(shù)組,然后分別用三個指針指向這三個數(shù)組,找到這兩個數(shù)組中各個元素在合并數(shù)組中的位置并插入,直到某個數(shù)組指針到達(dá)尾部。再將另一個數(shù)組剩下的所有元素,直接放入歸并數(shù)組尾部。算法的簡單實現(xiàn),需要注意的是對參數(shù)的校驗,判斷數(shù)組是否有序。

public class MergeOrderedArray { 
 public static int[] merge(int [] a,int []b){ 
  if(!isOrderedArray(a)){ 
   System.out.println(" array a is not an ordered array."); 
   return null; 
  } 
    
  if(!isOrderedArray(b)){ 
   System.out.println(" array b is not an ordered array."); 
   return null; 
  } 
   
  int a_len = a.length; 
  int b_len = b.length; 
  int[] merge = new int[a_len+b_len]; 
  int i=0,j=0,k=0; 
  while(i<a_len&&j<b_len){ 
   if(a[i]<b[j]){ 
    merge[k++]=a[i++]; 
   }else{ 
    merge[k++]=b[j++]; 
   } 
  } 
   
  //A數(shù)組全部合并完畢,將b數(shù)組剩余直接加入合并數(shù)組 
  if(i==a_len){ 
   for(;j<b_len;j++){ 
    merge[k++]= b[j]; 
   } 
  }else{ 
   for(;i<a_len;i++){ 
    merge[k++]= a[i]; 
   } 
  } 
   
  return merge; 
   
 } 
 
 public static boolean isOrderedArray(int [] array){ 
  if(array==null||array.length==0){ 
   return false; 
  } 
   
  for(int i = 0;i<array.length-1;i++){ 
   if(array[i]>array[i+1]){ 
    return false; 
   } 
  } 
  return true; 
 } 
  
 public static void main(String[] args) { 
  int a [] = {1,2,3,4,5}; 
  int b [] = {2,3,4,5,6,7,8,9}; 
  int [] merge = merge(a,b); 
  System.out.println(Arrays.toString(merge)); 
 } 
} 

      算法的時間復(fù)雜度,取決于待合并的兩個數(shù)組的長度,所以是O(M+N),空間復(fù)雜度也是O(M+N),即需要的歸并數(shù)組的長度是M+N。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 在安卓系統(tǒng)中插入表情到光標(biāo)位置的代碼詳解

    在安卓系統(tǒng)中插入表情到光標(biāo)位置的代碼詳解

    這篇文章主要介紹了在安卓系統(tǒng)中插入表情到光標(biāo)位置的代碼詳解,利用Java代碼在EditText控件中實現(xiàn),需要的朋友可以參考下
    2015-07-07
  • Java?Nacos與Gateway的使用操作筆記

    Java?Nacos與Gateway的使用操作筆記

    Spring?Cloud?Gateway?是一個用于構(gòu)建?API?網(wǎng)關(guān)的框架,提供了多種服務(wù)路由、過濾和負(fù)載均衡的功能,這篇文章主要介紹了Java?Nacos與Gateway的使用操作筆記,需要的朋友可以參考下
    2024-08-08
  • Spring自定義注解配置簡單日志示例

    Spring自定義注解配置簡單日志示例

    這篇文章主要介紹了Spring自定義注解配置簡單日志示例,注解可以增強(qiáng)我們的java代碼,同時利用反射技術(shù)可以擴(kuò)充實現(xiàn)很多功能,它們被廣泛應(yīng)用于三大框架底層,需要的朋友可以參考下
    2023-05-05
  • ShardingSphere JDBC強(qiáng)制路由使用的項目實踐

    ShardingSphere JDBC強(qiáng)制路由使用的項目實踐

    在某些特定場景下,可能需要繞過分片規(guī)則直接定位到特定的數(shù)據(jù)庫或表,這種情況下就可以使用HintRouting,本文就來介紹一下ShardingSphere JDBC強(qiáng)制路由使用的項目實踐,感興趣的可以了解一下
    2024-06-06
  • Java開發(fā)環(huán)境不再需要配置classpath問題

    Java開發(fā)環(huán)境不再需要配置classpath問題

    這篇文章主要介紹了Java開發(fā)環(huán)境不再需要配置classpath問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • java教程之對象序列化使用基礎(chǔ)示例詳解

    java教程之對象序列化使用基礎(chǔ)示例詳解

    所謂對象序列化就是將對象的狀態(tài)轉(zhuǎn)換成字節(jié)流,以后可以通過這些值再生成相同狀態(tài)的對象,下面詳細(xì)介紹一下java對象的序列化使用方法
    2014-01-01
  • Java?批量生成條碼的示例代碼

    Java?批量生成條碼的示例代碼

    這篇文章主要介紹了Java?批量生成條碼的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java中ResultSetMetaData 元數(shù)據(jù)的具體使用

    Java中ResultSetMetaData 元數(shù)據(jù)的具體使用

    本文主要介紹了Java中ResultSetMetaData 元數(shù)據(jù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Spring學(xué)習(xí)教程之AOP模塊的概述

    Spring學(xué)習(xí)教程之AOP模塊的概述

    AOP 從功能的角度來講,可能看作OOP編程方式的一種補(bǔ)充,提供了一種不同的代碼或者系統(tǒng)組織方式,下面這篇文章主要給大家介紹了關(guān)于Spring學(xué)習(xí)教程之AOP模塊的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05
  • 深入java垃圾回收的詳解

    深入java垃圾回收的詳解

    本篇文章是對java垃圾回收進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論

韶关市| 麻阳| 淮北市| 茶陵县| 竹北市| 台江县| 成武县| 岱山县| 于都县| 宾川县| 微山县| 平武县| 西吉县| 孟州市| 宜川县| 乌兰察布市| 友谊县| 浦江县| 乳源| 洞头县| 禄丰县| 宾川县| 唐海县| 醴陵市| 镇远县| 遵义市| 五华县| 岳普湖县| 卓尼县| 甘肃省| 永州市| 名山县| 雷波县| 扎囊县| 长垣县| 建瓯市| 苍山县| 车致| 工布江达县| 伊宁县| 高要市|