小さな問題

WBOY
WBOYオリジナル
2016-06-23 13:25:25990ブラウズ

整数型の配列をカスタマイズし、この配列内の数値を小さい順に並べ替えます。関数は使用できません。インデックス配列のみが使用できます。
どうすればいいですか?
これは先生から与えられた課題です。よく考えてみると、技術的な難易度はアポロの月面着陸に劣らないことが分かりました。誰かアイデアを教えてください。教師はいつも、プログラミングにはプログラミングのアイデアが必要であると言います。アイデアは本に載っているものではなく、それを吸収して消化した後に頭の中で育つ問題に対処する能力です。この能力には、より多くのプログラミング、より多くの思考、そしてより多くの練習が必要です。
でも、それしか思いつきません。テクノロジーに携わる者は寝食を忘れて問題解決に没頭する気概が必要と言われますが、解決できなければ窒息死してしまうので辛いです。 。 。


ディスカッションへの返信 (解決策)

参考: http://blog.csdn.net/fdipzone/article/details/8974656

参考: http://blog.csdn.net/fdipzone/article /details/8974656

わかりません、ちょっと説明してもらえますか?

バブルソート。
プロセス:
1. 配列全体を走査し、隣接する要素のすべてのペアを比較します。たとえば、$a[$i]>$a[$i+1] の位置を交換し、各比較で逆の順序を排除します。
2. 各サイクルの後、次回に必要なサイクル数は 1 減ります。

<?php// 定义数组$arr = array(2,3,1);for($i=0,$length=count($arr)-1; $i<$length; $i++){  // 定义外层循环需要数组长度-1次,因为两两比较    for($j=0; $j<$length-$i; $j++){  // 定义内层循环次数,-i表示已经排好的元素不用再参加比较,内层循环结束后,都会得出这组循环中最大的一个数,排到右边.        // 这三句话作用是,如果左边的元素比右边的大,则交换两个元素的位置,这样在循环结束后,就能得出这组数中最大的一个数。每次都这样执行,直到最后一个数        if($arr[$j]>$arr[$j+1]){              $tmp = $arr[$j];              $arr[$j] = $arr[$j+1];              $arr[$j+1] = $tmp;          }      }  } print_r($arr);?>

// 配列を定義します
$arr = array(2,3,1);

配列には 3 つの要素があるため、外側のループが 2 つ必要になります

要素が 3 つあるため、最初の内側のループが開始されます要素があるため、内側のループは2回になります
最初のステップ
$arr[0]は$arr[1] 2<3と比較されるため、演算の必要はありません
2番目のステップ
$arr[1]は比較されますwith $arr[2] 3>1 so $arr[1] と $arr[2] の値が交換され、配列は array(2,1,3) となる これは、この中で最大の数であることを示しています。グループは 3 で、一番右にランクされています。

2番目のループが始まります。ソートされていない要素が2つあるため、内側のループは1回です。
最初のステップ
$arr[0]と$arr[1]は2>1を比較するので、$arr[1] $ arr[2] の値が交換され、配列は array(1,2,3) になります。これは、このグループの最大の数値が 2 であり、3 の左にランクされていることを示しています。

これで並べ替えは成功しました。

// 配列を定義します
$arr = array(2,3,1);

配列には 3 つの要素があるため、2 つの外側のループが必要です

3 つの要素があるため、最初の内側のループが開始されます。つまり、内側のループは2回になります
最初のステップ
$arr[0]は$arr[1] 2<3と比較されるため、演算の必要はありません
2番目のステップ
$arr[1]は$と比較されますarr[2] 3>1 so $ arr[1] と $arr[2] の値が交換され、配列は array(2,1,3) となる これは、このグループ内の最大の数が であることを示しています。 3、一番右にランクイン。

2番目のループが始まります。ソートされていない要素が2つあるため、内側のループは1回です。
最初のステップ
$arr[0]と$arr[1]は2>1を比較するので、$arr[1] $ arr[2] の値が交換され、配列は array(1,2,3) になります。これは、このグループの最大の数値が 2 であり、3 の左にランクされていることを示しています。

これで並べ替えは成功しました。

それが 10 個の数値の配列の場合はどうなるでしょうか?

違いはありますか?授業をよく聞いてみませんか

$arr = array(2,3,1); これらは3つの数字です

$arr = array(2,3,1,6,7,8,4,5, 9, 10); これは 10 という数字です

他はすべて変更しないでください。

10 個の数値のアルゴリズム ステップが必要な場合は、3 つの数値の例を示します。
実際にこれを行うことができます。最初に 4 桁の数字を実行してください。3 桁の数字の例があり、その後 4 桁の数字を実行することは難しくありません。次に、5、6、7、8、9、10 と、ゆっくりと段階的に追加していきます。

先生の言ったことはナンセンスです、はははは。 Zhihu の言葉を借りれば、多くの人々の努力はまだ知恵を求めて戦う段階に達していません。あなたの質問は何世代ものプログラマに飽きられており、四則演算と同じです。
さまざまなサイズの魚が入ったバケツがあり、母親がそれらをサイズ別に分類するように望んでいるという生活シナリオを想像してみてください。簡単に言うと、1 から 10 までの 10 枚のカードしかないトランプがあります。どのように分類しますか? ? (大物選手のカードの扱い方はこんな感じでしょうか?)

先生の言ったことはナンセンスです、はははは。 Zhihu の言葉を借りれば、多くの人々の努力はまだ知恵を求めて戦う段階に達していません。あなたの質問は何世代ものプログラマに飽きられており、四則演算と同じです。
人生の場面を想像してみてください。さまざまなサイズの魚が入ったバケツがあります。あなたなら、それらをどのように分類するでしょうか。簡単に言うと、1 から 10 までの 10 枚のカードしかないトランプがあります。どのように分類しますか? ? (これは、大きなハンドを持っているときにカードを扱う方法ですか?)

なぜあなたはそんなに素晴らしいのですか? この種の質問は非常に緊張するように感じます。どうすればあなたのレベルに到達できますか?それともどうやって練習しますか?ご指導よろしくお願いいたします。 。 。

この初心者は現在 PHP のトレーニングに取り組んでおり、春節までに完了する予定です。その頃には、食べ物も草もほとんどなくなってしまい、勉強ができずに仕事が見つからなければ、路上で生活し、物乞いの集団に加わるしかなくなるでしょう。 。 。助けてください、ハイレベルのプログラマーになるにはどうすればよいですか?

理解できない場合は、ただ詳しく書いてください。

理解できない場合は、ただ詳しく書いてください。 for($i=0,$length =count($arr)-1; $i

分からなかったらもっと書いてください バブルソート選択 ソートもできます
要はfor($i=など) これまで習ったことがないのがポイントです0,$length=count($arr)-1; $i<$length; $i++) を書いていると、私は完全に混乱しています

これらの基本まだ学ぶ必要があります。まずは基本を学びましょう
for ループをご存知ですか?配列の値が 1 つずつ走査され、並べ替えられます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。