你能为无序数组创建一个函数来对数字进行数字排序吗?它可以是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>";
}
或任何类似的功能。
请有人请解释或展示如何理清这类任务的例子,
答案 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