选择排序(Selection Sort)​

选择排序(Selection Sort)​

选择排序(Selection Sort) ​选择排序是一种简单的比较类排序算法,通过不断选择剩余元素中的最小值,将其放到已排序序列末尾,直到全部排序完成。

📌 算法原理解释 ​从未排序序列中找到最小元素;将最小元素与未排序序列的第一个元素交换;移动边界,重复上述步骤直到所有元素排序完毕。选择排序的时间复杂度固定为 O(n²),不管数据是否有序。

💻 多语言代码实现 ​javascriptpythoncppjavaphpgojavascript// JavaScript 选择排序

function selectionSort(arr) {

const n = arr.length;

for (let i = 0; i < n - 1; i++) {

let minIdx = i;

for (let j = i + 1; j < n; j++) {

if (arr[j] < arr[minIdx]) minIdx = j;

}

if (minIdx !== i) {

[arr[i], arr[minIdx]] = [arr[minIdx], arr[i]];

}

}

return arr;

}python# Python 选择排序

def selection_sort(arr):

n = len(arr)

for i in range(n - 1):

min_idx = i

for j in range(i + 1, n):

if arr[j] < arr[min_idx]:

min_idx = j

if min_idx != i:

arr[i], arr[min_idx] = arr[min_idx], arr[i]

return arrcpp// C++ 选择排序

#include

using namespace std;

void selectionSort(vector& arr) {

int n = arr.size();

for (int i = 0; i < n - 1; i++) {

int minIdx = i;

for (int j = i + 1; j < n; j++) {

if (arr[j] < arr[minIdx]) minIdx = j;

}

if (minIdx != i) swap(arr[i], arr[minIdx]);

}

}java// Java 选择排序

public class SelectionSort {

public static void selectionSort(int[] arr) {

int n = arr.length;

for (int i = 0; i < n - 1; i++) {

int minIdx = i;

for (int j = i + 1; j < n; j++) {

if (arr[j] < arr[minIdx]) minIdx = j;

}

if (minIdx != i) {

int temp = arr[i];

arr[i] = arr[minIdx];

arr[minIdx] = temp;

}

}

}

}php

// PHP 选择排序

function selectionSort(array &$arr): array {

$n = count($arr);

for ($i = 0; $i < $n - 1; $i++) {

$minIdx = $i;

for ($j = $i + 1; $j < $n; $j++) {

if ($arr[$j] < $arr[$minIdx]) $minIdx = $j;

}

if ($minIdx !== $i) {

[$arr[$i], $arr[$minIdx]] = [$arr[$minIdx], $arr[$i]];

}

}

return $arr;

}

?>go// Go 选择排序

package main

func selectionSort(arr []int) []int {

n := len(arr)

for i := 0; i < n-1; i++ {

minIdx := i

for j := i + 1; j < n; j++ {

if arr[j] < arr[minIdx] {

minIdx = j

}

}

if minIdx != i {

arr[i], arr[minIdx] = arr[minIdx], arr[i]

}

}

return arr

}✅ 算法特点与总结 ​属性描述时间复杂度固定 O(n²)空间复杂度O(1)(原地排序)稳定性❌ 不稳定是否原地排序✅ 是📌 提示:选择排序简单但效率较低,适合教学和少量数据排序。

相关推荐

PS4港版如何成功注册?全面指南,轻松在港版PS4上注册与使用指南
肝是什么梗?为什么要把玩游戏说成肝?
365bet官方网投

肝是什么梗?为什么要把玩游戏说成肝?

⏱️ 07-17 ⭐ 6145
小米耳机排行榜
365服务热线

小米耳机排行榜

⏱️ 09-03 ⭐ 4047