常用的排序演算法

2021-08-29 04:37:11 字數 2539 閱讀 9156

1氣泡排序

原理是依次比較相鄰兩個資料,使之按照從小到大或者從大到小的方式排列,一次次的遍歷最終使最大或最小的資料排到列表的頂端;

方法:1

function maopao($arr)}}

return $arr;

}方法:2

function maopao($arr,$len)

for($i=0;$i<$len-1;$i++)

}$arr = maopao($arr,$len-1);

return $arr;

}function maopao($arr)

if($i == $len -2 )

}return $arr;

}2,快速排序

原理是選擇乙個基準值進行一次遍歷,把大於或小於基準值的資料分隔成兩部分,然後依照此分法依次對兩部資料進行再次的遍歷分割,重複多次,資料就完成了排序

方法:1

function kuaisu($arr,$left,$right)

$head = $left;

$foot = $right;

$key = $arr[$head];

while($head<$foot)

$arr[$head] = $arr[$foot];

while($head<$foot && $arr[$head] <= $key)

$arr[$foot]= $arr[$head];

}$arr[$head]= $key;

$arr = kuaisu($arr,$left,$head-1);

$arr = kuaisu($arr,$foot+1,$right);

return $arr;

}方法:2

function kuaisu($arr)

$min = array();

$equ = array();

$max = array();

$key = $arr[0];

for($i=0;$i<$len;$i++)

if($arr[$i]==$key)

if($arr[$i]>$key)

}return array_merge_recursive(kuaisu($min),$equ,kuaisu($max));

}3,直插排序

原理是選取乙個值插入到已經排序好的序列中,依次遍歷插入,直到排好序列

方法:1

function insert($arr)else

}$arr[$j]=$key;

}return $arr;    

}方法:2

function insert($arr)else}}

return $arr;

}4,希爾排序

原理是通過選擇d例如 $arr = array(1,4,2,5,9,8,3,6);

如果d=3,那麼 $arr[0] 和 $arr[3] 進行比較 ,依次類推;完成一趟排序;然後在縮小d,重複上面的動作,直到d=1

function xier($arr)}}

}return $arr;

}方法:2

function xier($arr)}}

return $arr;

}5,堆排序

原理是利用堆的特性,使其堆成為大根堆或小根堆,交換其堆頂值和該數列剩餘數列值的最後乙個值,然後再從新排列剩餘資料的堆使其成為大或者小根堆,依次重複多次直到只剩乙個數值,該數列排序完成;

function duixu($arr)

if($arr[$j]>$key)else

}$arr[$i] = $key;

return $arr;

};// 把陣列初始化堆

for($i=$len/2-1;$i>=0;$i--)

//進行對堆的排序

for($m = $len-1;$m>=0;$m--)

return $arr;

}6.選擇排序

原理就是每次遍歷剩餘的數列,找到與開始選定的游標對應的資料相比較,最大或者最小的資料的游標,然後交換其數值,直到最後的游標處。

function xuanze($arr)

}if($min !=$i)

}return $arr;

}7 合併排序

原理是把兩個已經排好的序的數列,合併成乙個有序的數列的,其過程是先要分組已有的無序數列並排序,然後合併,

function megerarr($arra,$arrb)

return array_merge($arrc, $arra, $arrb);

}function megersort($arr)

$m = floor($len/2);

$left = array_slice($arr, 0, $m);

$right = array_slice($arr, $m);

$left = megersort($left);

$right = megersort($right);

$arr = megerarr($left,$right);

return $arr;

}

常用的排序演算法

排序方式 插入排序 直接插入排序 shell排序 選擇排序 直接選擇排序 堆排序交換排序 氣泡排序 快速排序 歸併排序 分配和索引排序 基數排序 桶式排序 include using namespace std 直接插入排序 arr為待排陣列,n為陣列長度 void insertsort int a...

常用的排序演算法

1.氣泡排序 private static void bubblesort int a 列印氣泡排序的結果 for int i 0 i2.快速排序 public class quicksort qs.data data qs.sort 0,qs.data.length 1 qs.display 3....

常用的排序演算法

1.氣泡排序 時間複雜度 o n 2 氣泡排序演算法的運作如下 從後往前 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上...