溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用php怎么有序的打印數(shù)組

發(fā)布時間:2021-01-30 14:31:59 來源:億速云 閱讀:155 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)利用php怎么有序的打印數(shù)組,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

具體如下:

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

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

思考了一會發(fā)現(xiàn)也不是很難,假如數(shù)組是正序排列的,可以同時遍歷2個數(shù)組,將小的值進行排序,最后會遍歷完一個數(shù)組,留下一個非空數(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);
?>

運行得到的新數(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
)

其他語言實現(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; //標注a數(shù)組
  int j=0; //標注b數(shù)組
  int m=0; //標注新數(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代碼:

復制代碼 代碼如下:

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 //標注a數(shù)組
    var k = 0 //標注b數(shù)組
    var h = 0 //標注新數(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")
}

看完上述內(nèi)容,你們對利用php怎么有序的打印數(shù)組有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI