核心思想:从首位设为比较数开始,逐个对后面的数据进行比较,选择出最值,并记录其下标,一轮过后交换比较数和最值
时间复杂度 O(n²)
#include"stdio.h"
void swap1(int a[],int i,int j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
void swap2(int* a,int* b){
int temp = *a;
*a = *b;
*b = temp;
}
void print(int a[],int length){
for(int i=0;i<length;i++){
printf("%d ",a[i]);
}
putchar('\n');
}
void Select(int arr[],int length){
for(int i=0;i<length;i++){
int min = i; //每轮比较数的下标
for(int j = i+1;j<length;j++){
if(arr[min]>arr[j])
min = j;
}
if(min!=i)
swap1(arr,min,i);
}
}
int main(){
int a[10] = {4,1,9,5,7,2,6,8,3,10};
Select(a,10);
print(a,10);
return 0;
}