每次遍历选择最小值交换。
如:
序号 | 数组 |
---|---|
1 | {5,3,6,2,10} |
2 | 2,{3,6,5,10} |
3 | 2,3,{6,5,10} |
4 | 2,3,5,{6,10} |
5 | 2,3,5,6,{10} |
c++
#include<bits/stdc++.h>
using namespace std;
void selectSort( int arr[], int num ){
for( int i=0;i<num;i++ ){
int minIndex = i;
int minValue = arr[i];
for( int j=i;j<num;j++ ){
if( arr[j]<minValue ){
minIndex = j;
minValue = arr[j];
}
}
if( i != minIndex ){
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
void coutArray( int arr[], int num ){
for( int i=0;i<num;i++ ){
cout<<arr[i];
if( i==num-1 ){
cout<<endl;
} else {
cout<<" ";
}
}
}
int main(){
int arr[] = { 5,3,6,2,10 };
int arrLength = sizeof(arr) / sizeof(arr[0]);
selectSort( arr, arrLength );
coutArray( arr, arrLength );
return 0;
}
JS
function selectSort( arr ) {
for( let i=0;i<arr.length;i++ ){
for( let j=i;j<arr.length;j++ ){
let k = i;
if( arr[j]<arr[k] ){
k=j
}
if( i!=k ){
arr[i] = arr[i] + arr[k];
arr[k] = arr[i] - arr[k];
arr[i] = arr[i] - arr[k];
}
}
}
return arr;
}
console.log( selectSort([5,3,6,2,10]) )