选择排序Python实现
import random
# 生成待排序数组
a=[random.randint(1,999)
for x
in range(0,36
)]
# 选择排序
def selectionSort(array):
i=
0
while i<len(array)-1
:
min =
i
j = i+1
while j<
len(array):
if array[min] >
array[j]:
min =
j
j = j+1
if i !=
min:
array[i],array[min] =
array[min],array[i]
i = i+1
# 使用选择排序处理数组
selectionSort(a)
print(a)
快速排序PHP实现
<?
php
// 生成待排序数组
$a =
[];
for(
$i=0;
$i<36;
$i++
){
array_push(
$a,
mt_rand(1,999
));
}
shuffle(
$a);
/**
* 选择排序算法 selection sort
* @param [type] a 待排序数组的地址
* @return null
*/
function selectionSort(&
$a){
$min = 0
;
$len =
count(
$a);
for(
$i = 0;
$i<
$len-1;
$i++
){
$min =
$i;
// 在下标为$i之后的数组元素中查找比$a[$i]小的元素
for(
$j =
$i+1;
$j<
$len;
$j++
){
// 若找到比$a[$i]小的元素,则记录此元素的下标
if(
$a[
$min] >
$a[
$j]){
$min =
$j;
}
}
// 若找到比$a[$i]小的元素,则交换元素位置
if(
$min !=
$i){
$a[
$i] +=
$a[
$min];
$a[
$min] =
$a[
$i] -
$a[
$min];
$a[
$i] -=
$a[
$min];
}
}
}
selectionSort($a);
var_dump(
$a);
选择排序时间复杂度说明
比较次数:n(n-1)/2
交换次数:最好的时候为0,最差的时候为n-1次
总时间复杂度:O(n2)
尽管选择排序与冒泡排序的时间复杂度同为O(n2),但性能上还是要略优于冒牌排序。
转载于:https://www.cnblogs.com/praglody/p/6837582.html