函数用于无序数组以数字方式对数字进行排序?

时间:2017-04-21 19:19:21

标签: php arrays ruby sorting

你能为无序数组创建一个函数来对数字进行数字排序吗?它可以是Ruby或简单的伪代码。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int homework(char a[], char b[])
{
    char c[210]={'0'};
    int h1=strlen(a);
    int h2=strlen(b);
    int i=0;
    int j;
    int db=0;
    int l=0;
    while ( h1>=0 && h2>=0 )
    {
        db++;
        c[i]=a[l];
        c[i+1]=b[l];

        h2--;
        h1--;
        i+=2;
        l++;
    }
    h1++;
    h2++;

    printf("%d %d",h1,h2);

    if (h1>0){
      // i--; //No need to decrement

        while (h1>0)
        {
            c[i]=a[l];
            l++;
            i++;
            h1--;
        }
    }

    if (h2>0){
       // i--; //No need to decrement

        while (h2>0)
        {
            c[i]=b[l]; //here it should be 'b' not 'a'
            l++;
            i++;
            h2--;
        }
    }

    for (j=0; j<=strlen(a)+strlen(b); j++) //use '<=' not '<'
        printf("%c",c[j]);
    printf("\n");
}


int main()
{
    char a[100],b[100];

    gets(a);
    gets(b);
    homework(a,b);

    return 0;
}

我的回答是:

$unordedNumbersArray = array(10, 35, 11, 250, 48);

但它不被接受,因为我的高级开发人员正试图找到我的编程风格。我不能使用sort($unordedNumbersArray); $clength = count($unordedNumbersArray); for($x = 0; $x < $clength; $x++) { echo $unordedNumbersArray[$x]; echo "<br>"; } 或任何类似的功能。

请有人请解释或展示如何理清这类任务的例子,

2 个答案:

答案 0 :(得分:2)

试试这个: 请查看此Bubble Sort

$unordedNumbersArray = array(10, 35, 11, 250, 48);

$clength = count($unordedNumbersArray);
for ($x = 0; $x < $clength; $x++) {
    for ($y = $x + 1; $y < $clength - 1; $y++) {
        if ($unordedNumbersArray[$x] > $unordedNumbersArray[$y]) {
            $temp = $unordedNumbersArray[$x];
            $unordedNumbersArray[$x] = $unordedNumbersArray[$y];
            $unordedNumbersArray[$y] = $temp;
        }
    }
}
var_dump($unordedNumbersArray);

输出:

array(5) { [0]=> int(10) [1]=> int(11) [2]=> int(35) [3]=> int(48) [4]=> int(250) }

答案 1 :(得分:2)

如果数组中的数字在范围内(0,10 ^ 6),则可以使用counting sort在O(n)中进行排序。否则,您必须使用bubblesort O(n ^ 2)或mergesort O(nlogn)< / p>

在ruby中计算排序算法:

arr = [10, 35, 11, 250, 48]
sorted_arr = []
arr_hash = {}
arr.map{|element| arr_hash[element] = 1}
(0..1000000).each do |n|
  sorted_arr << n if arr_hash[n]
end
puts sorted_arr