演算法複習 排序

2021-08-17 10:23:11 字數 2316 閱讀 9958

穩定的排序:排序之後,源資料中相同的資料相對位置不會發生改變

不穩定的排序:反之。

<?php

$test = array(12,10,1,5,10);

foreach($test

as$val)

for($i=0;$i

$test);$i++)

}

}

bin($test222, 58, 0, count($test222)-1);

function

bin($data, $num, $left, $right)

$mid = round(($left + $right)/2);

if($data[$mid] == $num)else

if ($data[$mid] > $num)else

if ($data[$mid] < $num)

}

quicksort($test222, 0, count($test222)-1);

function

quicksort

(&$data, $left, $right)

}function

onesort

(&$data, $left, $right)

$data[$left] = $tmp;

return

$left;

}

優化方案:

1。當資料量小的時候,採用插入排序效率更高

2。單次好序的資料,如果有相同資料,相同的資料進行聚合,減少相同資料的排序次數

3。三數取中,開頭,結尾,中間的數,三個數去中間大小的資料作為開始值。

堆排序參考的部落格

<?php

$data = array(2,6,3,66,55,12,336,55,44,78,5,3,0,15,56,4);

//先將陣列各個節點從下至上進行堆排序,

for($i=floor(count($data)/2-1); $i>=0; $i--)

//排好序的資料,堆頂元素與最後一位進行置換,然後對剩餘元素繼續堆排序

for($i=count($data)-1;$i>=0;$i--)

foreach($data

as$val)

function

duisort

(&$data, $index, $size)

if($right

< $size && $data[$head] < $data[$right])

if($head != $index)

}function

swap

(&$data, $head, $index)

<?php

$data=array(2,5,6,3,1,0);

insert($data);

foreach($data

as$val)

function

insert

(&$data)

if($key+1 != $i)

}

}

有步長的插入排序

<?php

$data = array(5,3,4,8,9,0,10,2);

shell($data);

foreach($data

as$val)

function

shell

(&$data)

while($h>=1)

}

$h = floor($h/3);

}

}

<?php

$a = array(12,1,3,5,7,9,4);

$c =array();

dsort($a, 0, count($a)-1, $c);

foreach($a

as$val)

function

dsort

(&$a,$left, $right, $c)

}function

mersort

(&$a, $left, $mid, $right, $c)else

}while($i

<=$mid)

while($j

<=$right)

for($i=0; $i

<$k; $i++)

}

排序演算法複習

參考自 直接插入排序 從小到大排列 n個資料,第乙個資料平凡有序 假設前i 1個資料串有序,根據第i個的大小將第i個插入到此串中,則前i個的資料串也有序。因此可得到n個資料有序。插入方法 待插入元素為第i元素,數值存為temp,將 i 之前的元素 j 從第 i 1 元素開始與之比較 如果比temp大...

演算法複習 排序

排序中主要有插入排序 氣泡排序 歸併排序 快速排序等 主要從空間消耗 時間複雜度 最差時間複雜度等方面考慮演算法的好處 1.插入排序 插入排序是一種簡單直觀的排序演算法。它的工作原理非常類似於我們抓撲克牌 對於未排序資料 右手抓到的牌 在已排序序列 左手已經排好序的手牌 中從後向前掃瞄,找到相應位置...

排序演算法複習

created by nickwang on 2019 8 24.直接插入排序 o n 2 折半插入排序 o n 2 氣泡排序 o n 2 快速排序 o nlogn 選擇排序 o n 2 堆排序 o nlogn 歸併排序 o nlogn ifndef c sort h define c sort h...