亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java實(shí)現(xiàn)數(shù)組中的逆序?qū)?/h1>
 更新時(shí)間:2019年03月03日 16:41:47   作者:雨幕下的稻田  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)數(shù)組中的逆序?qū)Γ哂幸欢ǖ膮⒖純r(jià)值,感興趣的小伙伴們可以參考一下

在數(shù)組中的兩個(gè)數(shù)字,如果前面一個(gè)數(shù)字大于后面的數(shù)字,則這兩個(gè)數(shù)字組成一個(gè)逆序?qū)?,例如在?shù)組{7,5,6,4}中,一共存在5對(duì)逆序?qū)Γ謩e是{7,6},{7,5},{7,4},{6,4},{5,4}。輸入一個(gè)數(shù)組,求出這個(gè)數(shù)組中的逆序?qū)Φ目倲?shù)P。并將P對(duì)1000000007取模的結(jié)果輸出。,即輸出P%1000000007。

代碼

解法一

暴力簡(jiǎn)單低效,不會(huì)改變?cè)瓟?shù)組

public static int inversePairs(int[] array) {
    if (array == null || array.length < 2) {
      return 0;
    }
    int count = 0;
    for (int i = 0; i < array.length; i++) {
      for (int j = i + 1; j < array.length; j++) {
        if (array[i] > array[j]) {
          count++;
        }
      }
    }
    return count % 1000000007;
  }


解法二

利用數(shù)組的歸并排序,高效,但是會(huì)改變?cè)瓟?shù)組

public static int inversePairs2(int[] array) {
    if (array == null || array.length < 2) {
      return 0;
    }
    int count = mergeSort(array, 0, array.length - 1);
    return count % 1000000007;
  }
 
  private static int mergeSort(int[] array, int start, int end) {
    if (start >= end) {
      return 0;
    }
 
    // 找到數(shù)組的中點(diǎn),分割為兩個(gè)子數(shù)組,遞歸求解
    int middle = (start + end) / 2;
    int left = mergeSort(array, start, middle);
    int right = mergeSort(array, middle + 1, end);
 
    // 存儲(chǔ)歸并后的數(shù)組
    int[] copy = new int[array.length];
    System.arraycopy(array, start, copy, start, end - start + 1);
    // 從兩個(gè)子數(shù)組的尾部開(kāi)始遍歷
    int i = middle;
    int j = end;
    int copyIndex = end;
    // 記錄逆序?qū)Φ臄?shù)量
    int count = 0;
 
    while (i >= start && j >= middle + 1) {
      // 數(shù)組是升序的
      // 如果左邊數(shù)組比右邊數(shù)組大,則將大的放入存儲(chǔ)數(shù)組中
      // 并且累加逆序?qū)Γ瑧?yīng)為是有序的,所以左邊數(shù)組的第i個(gè)元素比第j個(gè)及其之前的數(shù)都大
      if (array[i] > array[j]) {
        copy[copyIndex--] = array[i--];
        count += (j - middle);
      } else {
        copy[copyIndex--] = array[j--];
      }
    }
 
    // 將子數(shù)組剩余的部分一次寫(xiě)入歸并后的存儲(chǔ)數(shù)組
    while (i >= start) {
      copy[copyIndex--] = array[i--];
    }
    while (j >= middle + 1) {
      copy[copyIndex--] = array[j--];
    }
 
    // 將本次兩個(gè)子數(shù)組的合并寫(xiě)入原數(shù)組中
    for (int k = start; k <= end ; k++) {
      array[k] = copy[k];
    }
    return left + right + count;
  }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • jmeter接口測(cè)試教程及接口測(cè)試流程詳解(全網(wǎng)僅有)

    jmeter接口測(cè)試教程及接口測(cè)試流程詳解(全網(wǎng)僅有)

    Jmeter是由Apache公司開(kāi)發(fā)的一個(gè)純Java的開(kāi)源項(xiàng)目,即可以用于做接口測(cè)試也可以用于做性能測(cè)試。本文給大家分享jmeter接口測(cè)試教程及接口測(cè)試流程,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • Java用三元運(yùn)算符判斷奇數(shù)和偶數(shù)的簡(jiǎn)單實(shí)現(xiàn)

    Java用三元運(yùn)算符判斷奇數(shù)和偶數(shù)的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了Java用三元運(yùn)算符判斷奇數(shù)和偶數(shù)的簡(jiǎn)單實(shí)現(xiàn),需要的朋友可以參考下
    2014-02-02
  • SpringBoot過(guò)濾器的使用

    SpringBoot過(guò)濾器的使用

    過(guò)濾器是對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,預(yù)處理過(guò)程,當(dāng)我們?cè)L問(wèn)網(wǎng)站時(shí),有時(shí)候會(huì)發(fā)布一些敏感信息,發(fā)完以后有的會(huì)用*替代,還有就是登陸權(quán)限控制等,一個(gè)資源,沒(méi)有經(jīng)過(guò)授權(quán),肯定是不能讓用戶隨便訪問(wèn)的,這個(gè)時(shí)候,也可以用到過(guò)濾器,需要的朋友可以參考一下
    2021-11-11
  • SpringBoot如何實(shí)現(xiàn)文件下載

    SpringBoot如何實(shí)現(xiàn)文件下載

    這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)文件下載問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 如何通過(guò)XML方式配置AOP過(guò)程解析

    如何通過(guò)XML方式配置AOP過(guò)程解析

    這篇文章主要介紹了如何通過(guò)XML方式配置AOP過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列與OJ題

    Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列與OJ題

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列與OJ題,本文章先是對(duì)隊(duì)列進(jìn)行介紹,后又介紹了四道OJ相關(guān)的題目,來(lái)使其深入理解,需要的朋友可以參考下
    2023-01-01
  • mybatis如何批量修改數(shù)據(jù)

    mybatis如何批量修改數(shù)據(jù)

    這篇文章主要介紹了mybatis如何批量修改數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java Idea TranslationPlugin翻譯插件使用解析

    Java Idea TranslationPlugin翻譯插件使用解析

    這篇文章主要介紹了Java Idea TranslationPlugin翻譯插件使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java工作環(huán)境的配置與Eclipse的安裝過(guò)程

    Java工作環(huán)境的配置與Eclipse的安裝過(guò)程

    這篇文章主要介紹了Java工作環(huán)境的配置與Eclipse的安裝過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • MySQL數(shù)據(jù)庫(kù)之Purge死鎖問(wèn)題解析

    MySQL數(shù)據(jù)庫(kù)之Purge死鎖問(wèn)題解析

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)之Purge死鎖問(wèn)題解析的相關(guān)資料,需要的朋友可以參考下
    2017-11-11

最新評(píng)論