选择排序
选择排序(从小到大):每次都只能排好(第一个),就是在除第一个数以外的数里面找一个最小的数,将这个数于第一个数比较,小就交换。
选择排序思想(从小到大):
1.取位排序序列的第一个元素下标赋给smallest
2.除标记位,遍历剩下未排序的元素,如果小于arr[smallest],将其下表赋给smallest
3.如果smallest不等于第一个元素下标,则将arr[smallest]与arr[i]互换
关键代码:
void select_sort(int arr[],int len){
int t;
int i,j;
int smallest;//最小值下标
for(i=0;i<len-1;i++){
smallest=i;
for(j=i+1;j<len;j++){
if(arr[j]<arr[smallest]){
smallest=j;
}
}
if(smallest!=i){
t=arr[smallest];
arr[smallest]=arr[i];
arr[i]=t;
}
}
}
完整代码:
```c
#include<stdio.h>
void select_sort(int arr[],int len){
int t;
int i,j;
int smallest;//最小值下标
for(i=0;i<len-1;i++){
smallest=i;
for(j=i+1;j<len;j++){
if(arr[j]<arr[smallest]){
smallest=j;
}
}
if(smallest!=i){
t=arr[smallest];
arr[smallest]=arr[i];
arr[i]=t;
}
}
}
int main(){
int i;
int len=5;
int arr[5]={3,1,5,7,6};
select_sort(arr,len);
for(i=0;i<len;i++){
printf("%d ",arr[i]);
}
return 0;
}