定义:把当前位置和其后最小的元素调换位置,直至整个数组有序。
特点:交换次数最少的排序算法。
c++代码:
#include <iostream>
using namespace std;
template<typename T>
void selectionSort( T arr[] , int n ){
for( int i=0 ; i<n-1 ; i++ ){
int minIndex = i;
for( int j=i+1 ; j<n ; j++ ){
if( arr[j] < arr[minIndex] ){
minIndex = j;
}
}
swap(arr[i], arr[minIndex]);
}
}
Java代码:
public class SelectionSort {
public static void sort( Comparable[] arr ){
for( int i=0 ; i<arr.length-1 ; i++ ){
int minIndex = i;
for( int j=i+1 ; j<arr.length ; j++ ){
if( arr[j].compareTo( arr[minIndex] ) < 0 ){
minIndex = j;
}
}
SortTestHelper.swap(arr, i, minIndex);
}
}
}
选择排序可视化🌰 http://mengmei219.top/Algorithm/selectSort/selectSort.php