共计 1438 个字符,预计需要花费 4 分钟才能阅读完成。
导读 | 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。 |
算法步骤
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
动图演示
代码实现
JavaScript 代码实现
实例
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for (var i = 0; i
Python 代码实现
实例
def selectionSort(arr):
for i in range(len(arr) - 1):
# 记录最小数的索引
minIndex = i
for j in range(i + 1, len(arr)):
if arr[j]
Go 代码实现
实例
func selectionSort(arr []int) []int {length := len(arr)
for i := 0; i arr[j] {min = j}
}
arr[i], arr[min] = arr[min], arr[i]
}
return arr
}
Java 代码实现
实例
public class SelectionSort implements IArraySort {
@Override
public int[] sort(int[] sourceArray) throws Exception {int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
// 总共要经过 N-1 轮比较
for (int i = 0; i
PHP 代码实现
实例
function selectionSort($arr)
{$len = count($arr);
for ($i = 0; $i
C 语言
实例
void swap(int *a,int *b) // 交換兩個變數
{
int temp = *a;
*a = *b;
*b = temp;
}
void selection_sort(int arr[], int len)
{
int i,j;
for (i = 0 ; i
C++
实例
template // 整數或浮點數皆可使用,若要使用物件(class)時必須設定大於(>)的運算子功能
void selection_sort(std::vector& arr) {for (int i = 0; i
C#
实例
static void selection_sort(T[] arr) where T : System.IComparable {// 整數或浮點數皆可使用
int i, j, min, len = arr.Length;
T temp;
for (i = 0; i 0)
min = j;
temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
Swift
实例
import Foundation
/// 选择排序
///
/// - Parameter list: 需要排序的数组
func selectionSort(_ list: inout [Int]) -> Void {for j in 0..<list.count - 1 {var minIndex = j
for i in j..<list.count {if list[minIndex] > list[i] {minIndex = i
}
}
list.swapAt(j, minIndex)
}
}
正文完
星哥玩云-微信公众号