选择排序
快速排序算法
先来看一下选择排序的过程(从小到大)

第一遍找到了1

然后跟现在的第一个位置进行交换

然后数组下标+1,进行重复操作
依次遍历到最后,即可完成排序
C++版本
#include <iostream>
#include <algorithm>
using namespace std;
void selectionSort(int arr[], int n)
{
for (int i=0; i<n; i++) {
// 首先定义一个位置(记录最小的值的位置)
int minIndex = i;
// 循环数组,进行比对,找到最小值
for (int j=i+1; j<n; j++) {
if(arr[j] < arr[minIndex]) {
minIndex = j;
}
}
swap(arr[i], arr[minIndex]);
}
}
int main(void)
{
int arr[10] = {9, 5, 7, 10, 2, 6, 8, 1, 3, 4};
selectionSort(arr, 10);
for(int i=0; i<10; i++){
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
PHP版本
// 选择排序
// 交换函数
function swap(&$arr, int $start, int $end)
{
$tmp = $arr[$start];
$arr[$start] = $arr[$end];
$arr[$end] = $tmp;
}
function selectionSort(&$arr, int $size)
{
for ($i=0; $i<$size; $i++){
// 最小的一个值的位置
$minIndex = $i;
for($j=$i+1; $j<$size; $j++){
if($arr[$j] < $arr[$minIndex]){
$minIndex = $j;
}
}
swap($arr, $i, $minIndex);
}
}
$arr = array(10, 2, 5, 8, 9, 7, 4, 1, 6, 3);
selectionSort($arr, 10);
for ($i=0; $i<10; $i++){
debug($arr[$i]);
}
未完待续