- 冒泡排序
思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
代码实现:
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function bubbleSort(len=count(i=1;len;k=0;len-k++)
{
if(k]>k+1])
{
arr[arr[arr[arr[tmp;
}
}
}
return $arr;
}
- 选择排序
思路分析:在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
代码实现:
function selectSort(len=count(i=0; len-1; p = j=j<j++) {
//p] 是当前已知的最小值
if(p] > j]) {
//比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。
j;
}
}
//已经确定了当前的最小值的位置,保存到i不同,则位置互换即可。
if(i) {
arr[arr[arr[arr[tmp;
}
}
//返回最终结果
return $arr;
}
3.插入排序
思路分析:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
代码实现:
function insertSort(len=count(i=1, len; tmp = i];
//内层循环控制,比较并插入
for(i-1;j--) {
if(arr[arr[arr[arr[tmp;
} else {
//如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。
break;
}
}
}
return $arr;
}
4.快速排序
思路分析:选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。
代码实现:
function quickSort(length = count(length <= 1) {
return base_num = left_array = array(); //小于基准的
i=1; length; base_num > i]) {
//放入左边数组
arr[right_array[] = i];
}
}
//再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
left_array);
right_array);
//合并
return array_merge(base_num), $right_array);
}
网友评论