一個小問題

來源:互聯網
上載者:User
自訂一個整數類型數組,對這數組的數從小到大進行排序,不能用函數,只能用索引數組。
咋搞?
這是老師布置的作業,想了想發現技術難度不亞於阿波羅登月,當然對大牛來說小菜一碟,誰能給個思路?老師老說編程要有編程思想,思想不是書上的東西,而是經過你吸收消化長在你腦子裡,能應對問題的能力,這能力要多寫程式多思考多鍛煉才有。
可就是想不出來。都說搞技術的要有廢寢忘食癡迷於解決問題的精神,可自己就是解決不了就會被活活憋死,痛苦啊。。。


回複討論(解決方案)

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

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

看不懂啊,能稍微解釋一下嗎,版主君?

冒泡排序。
過程:
1.遍曆整個數組,每兩兩相鄰的元素進行比較,如$a[$i]>$a[$i+1]則互換位置,每次比較消除一個逆序。
2.每一次迴圈後,下次再需要迴圈的次數減少1。

$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 所以不用操作
第二步
$arr[1] 與 $arr[2] 比較 3>1 所以$arr[1]與 $arr[2]的值交換,數組變為 array(2,1,3); 這樣得出這組數中最大是3,排在最右。

第二次迴圈開始,因為未排序的是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 所以不用操作
第二步
$arr[1] 與 $arr[2] 比較 3>1 所以$arr[1]與 $arr[2]的值交換,數組變為 array(2,1,3); 這樣得出這組數中最大是3,排在最右。

第二次迴圈開始,因為未排序的是2個元素,所以內迴圈1次
第一步
$arr[0] 與 $arr[1] 比較 2>1 所以$arr[1]與 $arr[2]的值交換,數組變為 array(1,2,3); 這樣得出這組數中最大是2,排在3的左邊。

這樣就排序成功了。

如果是十個數的數組呢?

有區別嗎?為什麼上課時不認真聽講

$arr = array(2,3,1); 這是3個數

$arr = array(2,3,1,6,7,8,4,5,9,10); 這是10個數

其他不變就可以了。

如果你是要十個數的演算法步驟,我已經給出你三個數的例子。
你其實可以這樣,先做4個數的吧,有3個數的例子,再做4個數的應該不難。然後做5,6,7,8,9,10的,慢慢一步步加上去就可以了。

老師說的話 瞎扯哈哈哈哈 。借用知乎的話很多人的努力還沒有到拼智慧的時候 你的這個題目 幾代程式員都玩膩了和四則運算一樣了。
你可以假設生活的情境 有一桶魚 大小不一 你老媽要你給它按大小排序 你會怎麼給它排序 。再簡單一點 有一副牌 只有10張 1-10 你會怎麼給它排序??(這特麼就是你大牌的時候 理牌的動作麼)

老師說的話 瞎扯哈哈哈哈 。借用知乎的話很多人的努力還沒有到拼智慧的時候 你的這個題目 幾代程式員都玩膩了和四則運算一樣了。
你可以假設生活的情境 有一桶魚 大小不一 你老媽要你給它按大小排序 你會怎麼給它排序 。再簡單一點 有一副牌 只有10張 1-10 你會怎麼給它排序??(這特麼就是你大牌的時候 理牌的動作麼)

你們怎麼這麼牛啊,感覺這種題特別繞特傷腦筋,怎樣才能達到你們這水平?或者說你們是怎麼練的?求指導,感激涕零。。。

本菜鳥現在在搞PHP培訓,大約春節前結束。到時候差不多已草盡糧絕,如果學的不精就找不到工作,那隻能流浪街頭加入丐幫了。。。幫幫我吧,怎樣成為高水平程式員?

不懂就多寫寫 冒泡排序 選擇排序這些都可以

不懂就多寫寫 冒泡排序 選擇排序這些都可以

關鍵是沒學過,比如for($i=0,$length=count($arr)-1; $i<$length; $i++),我都不知道for迴圈的初始化可以這樣寫,完全摸不著頭腦


不懂就多寫寫 冒泡排序 選擇排序這些都可以

關鍵是沒學過,比如for($i=0,$length=count($arr)-1; $i<$length; $i++),我都不知道for迴圈的初始化可以這樣寫,完全摸不著頭腦


這些基礎還是要學下的,先把基礎學好

知道for迴圈?數組值挨個迴圈遍曆排序

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.