加入收藏 | 设为首页 | 会员中心 | 我要投稿 承德站长网 (https://www.0314zz.com.cn/)- 云开发、边缘计算、数据分析、视频终端、人体识别!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中有序的数组打印或排序的例子

发布时间:2022-07-25 09:39:05 所属栏目:PHP教程 来源:互联网
导读:有序的数组打印或排序对于php来讲非常的简单了这里整理了几个不同语言的做法的实现代码,具体的我们一起来看这篇php中有序的数组打印或排序的例子吧. 最近有个面试题挺火的把俩个有序的数组打印或排序,刚看到这个题的时候也有点蒙,最优的算法肯定要用到有序的
  有序的数组打印或排序对于php来讲非常的简单了这里整理了几个不同语言的做法的实现代码,具体的我们一起来看这篇php中有序的数组打印或排序的例子吧.
 
  最近有个面试题挺火的——把俩个有序的数组打印或排序,刚看到这个题的时候也有点蒙,最优的算法肯定要用到有序的特性.
 
  思考了一会发现也不是很难,假如数组是正序排列的,可以同时遍历俩个数组,将小的值进行排序,最后会遍历完一个数组,留下一个非空数组,而且剩下的值肯定大于等于已经排好序的最大值.
 
  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);  
              }  //phpfensi.com
          }  
          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);  
  ?>
  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 &lt;stdio.h&gt;;
  int *sort(int a[], int b[], int a_len, int b_len) {
      int *temp = malloc(a_len+b_len);
   
      int i=0; //标注a数组
      int j=0; //标注b数组
      int m=0; //标注新数组
        
      while (i&lt;a_len&amp;&amp;j&lt;b_len) { //重新排序 if(a[i]&lt;b[j]) {
              temp[m++] = b[j++];
          } else {
              temp[m++] = a[i++];
          }
      }
        
      //将剩余的数字放在新数组后面(剩余的肯定是前面的数字大)
      if(i&lt;a_len) {
          for (; i&lt;a_len; i++) {
              temp[m++] = a[i];
          }
      }
      if(j&lt;b_len) {
          for (; j&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&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数组
      var k = 0 //标注b数组
      var h = 0 //标注新数组
   
            
      for j &lt; len_a &amp;&amp; k &lt; len_b {  
          if a[j] &gt; b[k] {
              c[h] = b[k]
              h++
              k++
          } else {
              c[h] = a[j]
              h++
              j++
          }
      }
   
      if j &lt; len_a {
          for i := j; i &lt; len_a; i++ {
              c[h] = a[i]
              h++
          }
      }
   
      if k &lt; len_b {
          for i := k; i &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")
  } 

(编辑:承德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读