摘要:它的基本思想是通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。
選擇排序
選擇排序主要是將假設數組中的第一個是最小的,循環與數組中的第一個進行比較 如果比其還小 則記錄下標 進行數值交換 效率相對冒泡來說比較高
function selection_sort($array){ $count=count($array); for($i=0;$i<$count-1;$i++){ /*findtheminest*/ $min=$i; echo"$min-->".$array[$min]."-->"; for($j=$i+1;$j<$count;$j++){ //由小到大排列 if($array[$min]>$array[$j]){ //表明當前最小的還比當前的元素大 $min=$j; //賦值新的最小的 } } echo$array[$min]."coco冒泡排序:
"; /*swap$array[$i]and$array[$min]即將當前內循環的最小元素放在$i位置上*/ if($min!=$i){ $temp=$array[$min]; $array[$min]=$array[$i]; $array[$i]=$temp; } } return$array; }
冒泡排序是將數組中的前后兩個相領的數值進行比較 條件成立 則進行交換 效率比較低 因為其交換的次數也比較多
function bubbleSort($numbers) { $cnt = count($numbers); for ($i = 0; $i < $cnt; $i++) { for ($j = 0; $j < $cnt - $i - 1; $j++) { if ($numbers[$j] > $numbers[$j + 1]) { $temp = $numbers[$j]; $numbers[$j] = $numbers[$j + 1]; $numbers[$j + 1] = $temp; } } } return $numbers;
}
插入排序:插入排序是將插入的數據保存在變量中,與數組中的每個數比較 找到合適的位置 進行插入 效率相對來說比較高
function insertSort($arr) { for($i=0;$i快速插入:=0&&$insertVal<$arr[$insertIndex]) { $arr[$insertIndex+1]=$arr[$insertIndex]; $insertIndex--; } $arr[$insertIndex+1]=$insertVal; } }
快速排序由C. A. R.
Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。效率很高
function quick_sort($arr) { //判斷參數是否是一個數組 if(!is_array($arr)) return false; //遞歸出口:數組長度為1,直接返回數組 $length=count($arr); if($length<=1) return $arr; //數組元素有多個,則定義兩個空數組 $left=$right=array(); //使用for循環進行遍歷,把第一個元素當做比較的對象 for($i=1;$i<$length;$i++) { //判斷當前元素的大小 if($arr[$i]<$arr[0]){ $left[]=$arr[$i]; }else{ $right[]=$arr[$i]; } } //遞歸調用 $left=quick_sort($left); $right=quick_sort($right); //將所有的結果合并 return array_merge($left,array($arr[0]),$right); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22466.html
摘要:良好的排序算法具有進行最少的比較和交換的特征。冒泡排序是一個基于比較的排序算法,被認為是效率最低的排序算法之一。現在讓我們使用實現冒泡排序算法。插入排序到目前為止,我們已經看到了兩種基于比較的排序算法。 預警 本文適合對于排序算法不太了解的新手同學觀看,大佬直接忽略即可。因為考慮到連貫性,所以篇幅較長。老鐵們看完需要大概一個小時,但是從入門到完全理解可能需要10個小時(哈哈哈,以我自己...
摘要:而在證明算法是正確的基礎上,第二步就是分析算法的時間復雜度。算法的時間復雜度反映了程序執行時間隨輸入規模增長而增長的量級,在很大程度上能很好反映出算法的優劣與否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 雖然工作中,你覺得自己并沒有涉及到算法這方面的東西,但是算法是程序的...
摘要:快速排序快速排序是對冒泡排序的一種改進。獲取中間數兩值相等,返回元素比目標大,查找左部元素比目標小,查找右部查找失敗擴展閱讀冒泡排序實現快速排序實現各種經典算法常見算法面試篇實現二分查找法 本書的 GitHub 地址:https://github.com/todayqq/PH... 算法可以說是大廠的必考題,對于算法,一定要理解其中的精髓、原理。 冒泡排序 冒泡排序的原理:一組數據,...
摘要:本文將介紹快速排序計數排序梳排序堆排序歸并排序希爾排序選擇排序插入排序地精排序聯合冒泡排序雞尾酒排序冒泡排序奇偶排序使用標志的冒泡排序種排序算法的實現。是一種不穩定的排序算法。 本文將介紹快速排序、計數排序、梳排序、堆排序、歸并排序、希爾排序、選擇排序、插入排序、地精排序、聯合冒泡排序、雞尾酒排序、冒泡排序、奇偶排序、使用標志的冒泡排序14種排序算法的實現。本文是由于閱讀了文章《測試評...
摘要:概念這里借用百度百科的一張圖來,非常形象快速排序算法是對冒泡算法的一個優化。獲取已經打亂了順序的數組快速排序這里引用的是我之前寫的冒泡算法排序冒泡運行結果 概念 這里借用百度百科的一張圖來,非常形象:showImg(https://segmentfault.com/img/bVdlR6); 快速排序算法是對冒泡算法的一個優化。他的思想是先對數組進行分割, 把大的元素數值放到一個臨時數...
閱讀 3491·2021-11-18 10:02
閱讀 1620·2021-10-12 10:12
閱讀 3001·2021-10-09 09:53
閱讀 4893·2021-09-09 09:34
閱讀 875·2021-09-06 15:02
閱讀 2785·2021-08-05 10:02
閱讀 3146·2019-08-30 15:44
閱讀 3129·2019-08-28 18:04