Amaze UI Logo

码动指尖



选择排序

快速排序算法


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

image.png

第一遍找到了1

image.png

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

image.png

然后数组下标+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]);
}


未完待续


作者  :  奕弈

喵喵喵,你在心上



评论


About ME

about me

奕弈

为了最初的心,努力奋斗,从不懈怠的学习。

我不想成为一个庸俗的人。十年百年后,当我们死去,质疑我们的人同样死去,后人看到的是裹足不前、原地打转的你,还是一直奔跑、走到远方的我?

Contact ME