找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1739|回复: 0
打印 上一主题 下一主题

php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】

[复制链接]

2487

主题

2487

帖子

7391

积分

论坛元老

Rank: 8Rank: 8

积分
7391
跳转到指定楼层
楼主
发表于 2018-2-14 05:30:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了php实现有序数组打印或排序的方法。分享给大家供大家参考,具体如下:
有序的数组打印或排序对于php来讲非常的简单了这里整理了几个不同语言的做法的实现代码,具体的我们一起来看这篇php中有序的数组打印或排序的例子吧.
最近有个面试题挺火的——把2个有序的数组打印或排序,刚看到这个题的时候也有点蒙,最优的算法肯定要用到有序的特性.
思考了一会发现也不是很难,假如数组是正序排列的,可以同时遍历2个数组,将小的值进行排序,最后会遍历完一个数组,留下一个非空数组,而且剩下的值肯定大于等于已经排好序的最大值.
PHP代码:
运行得到的新数组为:
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
)
其他语言实现代码:
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
C代码:
#include <stdio.h>;
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<a_len&&j<b_len) { //重新排序 if(a<b[j]) {
      temp[m++] = b[j++];
    } else {
      temp[m++] = a[i++];
    }
  }
  //将剩余的数字放在新数组后面(剩余的肯定是前面的数字大)
  if(i<a_len) {
    for (; i<a_len; i++) {
      temp[m++] = a;
    }
  }
  if(j<b_len) {
    for (; j<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<a_len+b_len; y++) {
    printf("%d ", c[y]);
  }
  return 0;
}
GO代码:
[U]复制代码[/U] 代码如下: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 < len_a && k < len_b {
        if a[j] > b[k] {
            c[h] = b[k]
            h++
            k++
        } else {
            c[h] = a[j]
            h++
            j++
        }
    }
    if j < len_a {
        for i := j; i < len_a; i++ {
            c[h] = a
            h++
        }
    }
    if k < len_b {
        for i := k; i < len_b; i++ {
            c[h] = b
            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")
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP针对XML文件操作技巧总结》、《PHP错误与异常处理方法总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总
希望本文所述对大家PHP程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • Python 初始化多维数组代码
  • 探究数组排序提升Python程序的循环的运行效率的原因
  • 一些Python中的二维数组的操作方法
  • python读取TXT到数组及列表去重后按原来顺序排序的方法
  • Python自定义类的数组排序实现代码
  • Python 比较两个数组的元素的异同方法
  • Python实现变量数值交换及判断数组是否含有某个元素的方法
  • Python实现字符串与数组相互转换功能示例
  • Python中列表list以及list与数组array的相互转换实现方法
  • Python实现二维数组按照某行或列排序的方法【numpy lexsort】
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端