• 技术文章 >php教程 >PHP源码

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

    2016-06-08 17:19:48原创704
    有序的数组打印或排序对于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);
    }
    }
    if(!empty($a)) { $temp = array_merge($temp, $a); }
    if(!empty($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 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")
    }

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp amp len int temp
    上一篇:php输出xml(导出excel)数据过长时被截断 下一篇:PHP聊天室_WebSocket技术实战
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 服务器不允许执行exe,但php程序需要用到exe,有没有办法?• 让Windows主机在IIS支持PHP和MySQL• 获取用户真实 IP , 淘宝IP接口获得ip地理位置• PHP实现C#山寨ArrayList• PHP缩略图,满窗格等比例缩小
    1/1

    PHP中文网