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

php實(shí)現(xiàn)有序數(shù)組打印或排序的方法【附Python、C及Go語(yǔ)言實(shí)現(xiàn)代碼】

 更新時(shí)間:2016年11月10日 14:56:38   作者:smiling  
這篇文章主要介紹了php實(shí)現(xiàn)有序數(shù)組打印或排序的方法,涉及php針對(duì)數(shù)組的遍歷、判斷、構(gòu)造與合并等常用操作技巧,并附帶了Python、C及Go語(yǔ)言的實(shí)現(xiàn)代碼,需要的朋友可以參考下

本文實(shí)例講述了php實(shí)現(xiàn)有序數(shù)組打印或排序的方法。分享給大家供大家參考,具體如下:

有序的數(shù)組打印或排序?qū)τ趐hp來(lái)講非常的簡(jiǎn)單了這里整理了幾個(gè)不同語(yǔ)言的做法的實(shí)現(xiàn)代碼,具體的我們一起來(lái)看這篇php中有序的數(shù)組打印或排序的例子吧.

最近有個(gè)面試題挺火的——把2個(gè)有序的數(shù)組打印或排序,剛看到這個(gè)題的時(shí)候也有點(diǎn)蒙,最優(yōu)的算法肯定要用到有序的特性.

思考了一會(huì)發(fā)現(xiàn)也不是很難,假如數(shù)組是正序排列的,可以同時(shí)遍歷2個(gè)數(shù)組,將小的值進(jìn)行排序,最后會(huì)遍歷完一個(gè)數(shù)組,留下一個(gè)非空數(shù)組,而且剩下的值肯定大于等于已經(jīng)排好序的最大值.

PHP代碼:

<?php
  function sort_arr($a,$b) {
    $temp = array();
    while ($a&&$b) {
      if($a['0']<$b['0']) {
        $temp[] = array_shift($a);
      } else {
        $temp[] = array_shift($b);
      }
    }
    if(!emptyempty($a)) { $temp = array_merge($temp, $a); }
    if(!emptyempty($b)) { $temp = array_merge($temp, $b); }
    return $temp;
  }
  $a = array(1,2,3,4,5,6);
  $b = array(2,3,4,10,10,10,10);
  sort_arr($a, $b);
?>

運(yùn)行得到的新數(shù)組為:

Array
(
  [0] => 1
  [1] => 2
  [2] => 2
  [3] => 3
  [4] => 3
  [5] => 4
  [6] => 4
  [7] => 5
  [8] => 6
  [9] => 10
  [10] => 10
  [11] => 10
  [12] => 10
)

其他語(yǔ)言實(shí)現(xiàn)代碼:

Python 代碼:

def fib(a,b):
  len_a = len(a)
  c = []
  while len(a) and len(b):
    if a[0] > b[0]:
      c.append(b.pop(0))
    else:
      c.append(a.pop(0))
  if len(a):
    c = c+a
  if len(b):
    c = c+b
  i=0
  while i<len(c):
    print(c[i])
    i = i+1
a = [1,2,3,4,5]
b = [2,3,4,5,6,7,8,9]
fib(a,b)

C代碼:

#include &amp;lt;stdio.h&amp;gt;;
int *sort(int a[], int b[], int a_len, int b_len) {
  int *temp = malloc(a_len+b_len);
  int i=0; //標(biāo)注a數(shù)組
  int j=0; //標(biāo)注b數(shù)組
  int m=0; //標(biāo)注新數(shù)組
  while (i&amp;lt;a_len&amp;amp;&amp;amp;j&amp;lt;b_len) { //重新排序 if(a[i]&amp;lt;b[j]) {
      temp[m++] = b[j++];
    } else {
      temp[m++] = a[i++];
    }
  }
  //將剩余的數(shù)字放在新數(shù)組后面(剩余的肯定是前面的數(shù)字大)
  if(i&amp;lt;a_len) {
    for (; i&amp;lt;a_len; i++) {
      temp[m++] = a[i];
    }
  }
  if(j&amp;lt;b_len) {
    for (; j&amp;lt;b_len; j++) {
      temp[m++] = b[j];
    }
  }
  return temp;
}
int main(int argc, const char * argv[]) {
  int a[4] = {2,3,11,89};
  int b[6] = {4,6,9,10,22,55};
  int a_len = sizeof(a) / sizeof(a[0]);
  int b_len = sizeof(b) / sizeof(b[0]);
  int *c = sort(a, b, a_len, b_len);
  int y = 0;
  for (; y&amp;lt;a_len+b_len; y++) {
    printf("%d ", c[y]);
  }
  return 0;
}

GO代碼:

復(fù)制代碼 代碼如下:
package main
import "fmt"
func main() {
    var a = [5]int{1, 2, 3, 4, 5}
    var b = [8]int{4, 5, 6, 7, 89, 100, 111, 112}
    var len_a = len(a)
    var len_b = len(b)
    var c = make([]int, len_a+len_b)
    var j = 0 //標(biāo)注a數(shù)組
    var k = 0 //標(biāo)注b數(shù)組
    var h = 0 //標(biāo)注新數(shù)組
    for j &amp;lt; len_a &amp;amp;&amp;amp; k &amp;lt; len_b {
        if a[j] &amp;gt; b[k] {
            c[h] = b[k]
            h++
            k++
        } else {
            c[h] = a[j]
            h++
            j++
        }
    }
    if j &amp;lt; len_a {
        for i := j; i &amp;lt; len_a; i++ {
            c[h] = a[i]
            h++
        }
    }
    if k &amp;lt; len_b {
        for i := k; i &amp;lt; len_b; i++ {
            c[h] = b[i]
            h++
        }
    }
    Print(c, "c")
}
/**
 * [Print array]
 * @param {[type]} o    []int  [array]
 * @param {[type]} name string [array name]
 */
func Print(o []int, name string) {
    fmt.Printf("%s: ", name)
    for _, v := range o {
        fmt.Printf("%d ", v)
    }
    fmt.Printf("\n")
}

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP針對(duì)XML文件操作技巧總結(jié)》、《PHP錯(cuò)誤與異常處理方法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語(yǔ)法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 用PHP編寫每周簽到功能以提高用戶參與度

    用PHP編寫每周簽到功能以提高用戶參與度

    這篇文章主要介紹了用PHP編寫每周簽到功能以提高用戶參與度,簽到系統(tǒng)是一種輕量、互動(dòng)性強(qiáng)的營(yíng)銷方式,通過(guò)用戶簽到獲取免費(fèi)權(quán)益,引導(dǎo)用戶形成每天、每周等的習(xí)慣性操作,從而達(dá)到品牌推廣的目的
    2023-04-04
  • 詳解PHP的執(zhí)行原理和流程

    詳解PHP的執(zhí)行原理和流程

    這篇文章主要介紹了詳解PHP的執(zhí)行原理和流程,對(duì)此感興趣的同學(xué),可以詳細(xì)看一下
    2021-04-04
  • smarty巧妙處理iframe中內(nèi)容頁(yè)的代碼

    smarty巧妙處理iframe中內(nèi)容頁(yè)的代碼

    最近在用smarty做一個(gè)小項(xiàng)目,發(fā)現(xiàn)smarty中模板引擎挺不錯(cuò),讓前端和后端真正的分離
    2012-03-03
  • PHP 加密/解密函數(shù) dencrypt(動(dòng)態(tài)密文,帶壓縮功能,支持中文)

    PHP 加密/解密函數(shù) dencrypt(動(dòng)態(tài)密文,帶壓縮功能,支持中文)

    采用SHA1生成密匙簿,超過(guò)300個(gè)字符使用ZLIB壓縮 支持中文,大家可以測(cè)試下。
    2009-01-01
  • php打印輸出棋盤的實(shí)現(xiàn)方法

    php打印輸出棋盤的實(shí)現(xiàn)方法

    這篇文章主要介紹了php打印輸出棋盤的實(shí)現(xiàn)方法,以實(shí)例形式分析了兩種不同的實(shí)現(xiàn)方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • PHP簡(jiǎn)單實(shí)現(xiàn)斷點(diǎn)續(xù)傳下載的方法

    PHP簡(jiǎn)單實(shí)現(xiàn)斷點(diǎn)續(xù)傳下載的方法

    這篇文章主要介紹了PHP實(shí)現(xiàn)斷點(diǎn)續(xù)傳下載的方法,涉及php針對(duì)文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • PHP中->和=>的含義及使用示例解析

    PHP中->和=>的含義及使用示例解析

    這篇文章主要介紹了PHP中->和=>的含義及使用示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • php session的鎖和并發(fā)

    php session的鎖和并發(fā)

    這篇文章主要介紹了php session的鎖和并發(fā),與之相關(guān)的現(xiàn)象有請(qǐng)求阻塞、session數(shù)據(jù)丟失、session數(shù)據(jù)讀不到的問(wèn)題,感興趣的小伙伴們可以參考一下
    2016-01-01
  • PHP 數(shù)組操作詳解【遍歷、指針、函數(shù)等】

    PHP 數(shù)組操作詳解【遍歷、指針、函數(shù)等】

    這篇文章主要介紹了PHP 數(shù)組操作,結(jié)合實(shí)例形式詳細(xì)分析了PHP數(shù)組遍歷、指針、數(shù)組常用函數(shù)等相關(guān)原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • php 更新數(shù)據(jù)庫(kù)中斷的解決方法

    php 更新數(shù)據(jù)庫(kù)中斷的解決方法

    使用PHP程序更新數(shù)據(jù)庫(kù),總是到160000條時(shí)中斷, 查看LOG,顯示超過(guò)PHP最大執(zhí)行時(shí)間的錯(cuò)誤, 只需要在PHP腳本中加入如下語(yǔ)句
    2009-06-06

最新評(píng)論

西宁市| 昂仁县| 抚顺县| 南开区| 锡林郭勒盟| 榕江县| 台湾省| 黔西| 黔西| 炎陵县| 南陵县| 乐清市| 比如县| 茂名市| 临安市| 莎车县| 新龙县| 枣强县| 无极县| 长乐市| 东阳市| 苏尼特右旗| 綦江县| 武冈市| 灵宝市| 无锡市| 安徽省| 邵阳县| 达拉特旗| 松潘县| 恩施市| 峨眉山市| 华阴市| 额济纳旗| 安福县| 沙河市| 榆社县| 溧水县| 崇信县| 洛南县| 南江县|